[Feature Request] Pagination on data table

Existing Component
Yes
Component Name
Table
Description
Need a way to paginate the data table. Pagination should take care of orders and filters.

I've added a pull request for 2.0 version. For those who need this feature, you can also use my custom wrapper instead, element-table-wrapper, just a simple high-order component based on el-table and el-pagination,  nearly the same use as el-table, support 1.x verson of Element-ui. I'll maintain 2.0 version when it's stable.

Love ElementUI pagination and table, Would be nice if they worked together.
Would be nice if el-table sliced data properly as per current page and page-size props, these being already managed by el-pagination.
Any thoughts ?

I think is very important!

+1

+1

+1

+1

+1

+1

+1

+1

In vue-element-admin there is example of pagination

http://panjiachen.github.io/vue-element-admin/#/table/complex-table

Unfortunately it is paginated by backend. I think it would be nice to have pure frontend pagination.

+1

+1

+1

This feature is so important that I switched from eleme.io to vuetify

https://vuetifyjs.com/en/components/data-tables

In my opinion this project can copy interface from data table proposed by vuetify. Eleme.io looks better but in aspect of tables with searching and pagination vuetify is more practical.
What creators/contributors and community of eleme.io thins about this proposition?

Why this is not implemented yet?

If we just had a filtering API like in Tree component, for the row filtering to be initiated not only by user clicking controls... I think pagination would be a piece of cake.

Hi guys!
I had to write a logic for filtering and supporting pagination. This could and should be cleaner, but it works if anyone needs some code to start with 😃
here's a snippet:
// Attach this to @filter-change on table (remember to add column-key for table-column)
handleFilterChange(e) {
      const propertyName = Object.getOwnPropertyNames(e)[0]
      const value = e[propertyName]
      this.filters[propertyName] = value
      this.filterAndChunkList()
   },

// Chunks list into pages
chunkList(list) {
      const result = []
      var i, j, temparray, chunk = this.listQuery.limit;
      for (i = 0, j = list.length; i < j; i += chunk) {
        temparray = list.slice(i, i + chunk);
        result.push(temparray)
      }
      this.chunkedList = result
      this.listQuery.page = 1  // Always return to first chunk
  },

filterAndChunkList() {
      const filters = this.filters
      const list = this.unfiltered
      var filteredList = []
      let areFiltersActive = false

      Object.keys(filters).forEach((key, i) => {
        const filterValues = filters[key]
        let filteredRows

        if (filterValues.length !== 0) {
          areFiltersActive = true
          filterValues.forEach((value, y) => {
            const listToFilter = i === 0 ? list : filteredList

            filteredRows = listToFilter.filter(row => row[key] === value)

           // Handle multiple filters, it switches the list based on single/multiple filters
            if (i !== 0 && y === 0) {
              filteredList = filteredRows
            } else {
              filteredList.push(...filteredRows)
            }
          })
        }
      })

      const result = areFiltersActive ? filteredList : list

      this.list = result
      this.chunkList(result) // Chunk again to provide accurate results
    },

Template to adjust:
  <el-table
       :data="chunkedList[listQuery.page - 1]"
       @filter-change="handleFilterChange">

  <el-pagination
      :page-size="listQuery.limit" // Limit
      :hide-on-single-page="true"
      :pager-count="11"
      layout="total, sizes, prev, pager, next, jumper"
      :page-sizes="[20, 50, 100, 150]"
      :total="list.length" // Size of currently displayed data
      @current-change="handlePageChange"
      @size-change="handleSizeChange"
    />

data object
return {
      list: '',
      chunkedList: [],
      unfiltered: '',
      filters: {},
      listQuery: {
        page: 1,
        limit: 20,
      },
};

It's still an open issue.

Any update on this one?
I use this flow
<el-table :data="pagedTableData" :sort-change="sortChange">
...
</el-table>
<el-pagination background
         layout="prev, pager, next"
         :page-size="pageSize"
         :total="this.chartData.length"
         @current-change="setPage">
</el-pagination>

private page = 1;
private pageSize = 15;
private get pagedTableData() {
  return this.chartData.slice(this.pageSize * this.page - this.pageSize, this.pageSize * this.page);
}
private setPage(val: any) {
  this.page = val;
}

But this obviously has a big flaws because when i sort the columns it will sort is per page, and that is not desirable.


rename slave to aligned

Summary
Slave is an antiquated word and can easily be replaced with something less insensitive. I took inspiration from the ag-grid project and their improved naming scheme.
Note that the scope of this is only the word slave, not the word master. That can optionally be improved later on if so desired.
Test plan
I can the tests and everything seems to be working just fine. Since I only changed a comment in the actual code and all other changes relate to docs/tests, I feel very confident that I didn't break anything.

I support this. Perhaps child is also an option (I don't know the context)

Community lets vote:
👍 for approve
👎 for close
The survey last until 31 October

I'm in favour of renaming this, but I think we should rename master as well, at the same time. So let's try to figure out a good new name for this pair.
Old: master/slave
New: primary/replica... other suggestions?

main cell / sibling cell
reference cell / associated cell

parent / child
as @papb mention : main / sibling sounds good

My vote is for main / sibling as well


"Error: The tuning parameter grid should have columns sigma, C"

This issue has been solved with commit c716bbe. Let me know if you still experience some problems.


Getting a mismatch error in Bower

Tried lots of different reinstalls, keep getting the following error:
mismatch Version declared in the json (1.2.10) is different than the resolved one (1.2.12)
I've seen some similar issues reported on git for other apps which seem to be resolved by the app author- would appreciate some help here.
I ran a bower install using the --force switch, which does overwrite files to the correct folder but omits the src folder containing the all important javascript file.
Thanks in advance!

Ah. I see.
I should update the pakage.json ^^'

Should be fixed soon.
Update to 1.2.13 :)

Yes, thanks a lot for your work on this!


Replace this "switch" statement by "if" statements

Describe the technical debt
A clear and concise description of what the technical debt is.
Location: services/TrackDeleteService.java
Proposed solution
If applicable:

add logcat output

Technical information

Device: [e.g. Nexus 7 (2013)]
OS: [e.g. LineageOS 15.1]
OpenTracks version: [e.g. v3.2.4]
OpenTracks commit id (only for nightly builds): [e.g. 4b333bb]

Replaced the SWITCH statement with corresponding IF ELSE.
Added a custom runtime exception class to prevent generic usage of it.

#84 Replaced SWITCH with IF-ELSE statement and added a custom exception class to counter generic usage of exceptions


MINOR: Include request header in exception when correlation of request/response fails

LGTM! Jenkins failure is not relevant.

Merged into both trunk and 0.10.0.


Support named pipe mounts for Windows containers

Adds support to mount named pipes into Windows containers. This support
already exists in hcsshim, so this change just passes them through
correctly in cri. Named pipe mounts must start with "\.\pipe".
Signed-off-by: Kevin Parsons<EMAIL_ADDRESS>Fixes https://github.com/containerd/containerd/issues/4320

Looks like appveyor broke on downloading mingw:
Downloading mingw
  from 'https://downloads.sourceforge.net/mingw-w64/x86_64-5.3.0-release-posix-seh-rt_v4-rev0.7z'
ERROR: The remote file either doesn't exist, is unauthorized, or is forbidden for url 'https://downloads.sourceforge.net/mingw-w64/x86_64-5.3.0-release-posix-seh-rt_v4-rev0.7z'. Exception calling "GetResponse" with "0" argument(s): "The operation has timed out"

/ok-to-test

Looks like appveyor broke on downloading mingw:
Downloading mingw
  from 'https://downloads.sourceforge.net/mingw-w64/x86_64-5.3.0-release-posix-seh-rt_v4-rev0.7z'
ERROR: The remote file either doesn't exist, is unauthorized, or is forbidden for url 'https://downloads.sourceforge.net/mingw-w64/x86_64-5.3.0-release-posix-seh-rt_v4-rev0.7z'. Exception calling "GetResponse" with "0" argument(s): "The operation has timed out"

happens all the time..

@kevpar - Looks like one of the unit tests broke. Need to update the assumption there or else fix the code not sure didnt look into it. But good point, can you add a unit test for this in the same file as well for npipe on windows

@mikebrow I've added a test in container_create_windows_test.go, but since this mocks out the OS, it doesn't validate the filepath interactions. Is there anywhere else I should add a test? It looks like the integration tests don't currently run on Windows (unless I've missed something).

Got an error that seems unrelated to my changes:
I0624 07:55:20.688] pkg/server/image_pull.go:287:3: SA1019: tlsConfig.BuildNameToCertificate is deprecated: NameToCertificate only allows associating a single certificate with a given name. Leave that field nil to let the library select the first compatible chain from Certificates.  (staticcheck)
I0624 07:55:20.688] 		tlsConfig.BuildNameToCertificate()
I0624 07:55:20.688] 		^

I'll take a look at this tomorrow, just posting in case anyone knows why this was hit.

@mikebrow I've added a test in container_create_windows_test.go, but since this mocks out the OS, it doesn't validate the filepath interactions. Is there anywhere else I should add a test? It looks like the integration tests don't currently run on Windows (unless I've missed something).

I think your new test is fine for now. To validate the interactions.... Maybe improve the tests in cri-tools critest under pkg/validate/container*.go.

Got an error that seems unrelated to my changes:
I0624 07:55:20.688] pkg/server/image_pull.go:287:3: SA1019: tlsConfig.BuildNameToCertificate is deprecated: NameToCertificate only allows associating a single certificate with a given name. Leave that field nil to let the library select the first compatible chain from Certificates.  (staticcheck)
I0624 07:55:20.688] 		tlsConfig.BuildNameToCertificate()
I0624 07:55:20.688] 		^

I'll take a look at this tomorrow, just posting in case anyone knows why this was hit.

let's see... BuildNameToCertificate seems to have been deprecated in go 1.14..
But we are on go 1.13.12.. hmm..
Makefile:
	$(GO) get -d github.com/golangci/golangci-lint/cmd/golangci-lint
	@cd $(GOPATH)/src/github.com/golangci/golangci-lint/cmd/golangci-lint; \
		git checkout v1.18.0; \
		go install

hmm... perhaps there is a golangci-lint already on the path that is a different version?

fix(workaround) here: https://github.com/containerd/cri/pull/1516

kk fixed ci .. please rebase.

Looks like all the tests pass now, so I think this is good to go. Thanks @mikebrow for your help!


Feature Idea : Keep track of books lended to friends

I usually lend books to friends and being able to keep the record of to whom I lent which book in JELU would be great !

Yes why not.
I think we need at least a boolean to flag a book as lended.
The personal notes field could be used to track to whom the book was lended and a return date or something.

This should be available in 0.32.0


south african mobile number regex

Hi guys,
Just an updated regex for en-ZA mobile numbers:
'en-ZA': /^(\+?27|0)[6-8][0-9]{8}$/,
Not sure if I should do a full pull request or how this generally works, but this regex accurately checks for mobile numbers including area(or in this case network) code instead of just length and country code.

validate.js does not have a phone number validator

Is there a way we can make this a feature request?

With everyday day more mobile users, it would be a great addition to support mobile phone number in validate.js. What do you think?


[FEATURE REQUEST] Allow selection of a specific light segment in a ledstrip

Would it be possible to only set the color of a specific light segment in the strip, that way, you can create cool effects? This is already possible in the Govee app for mobile.

I would love to add this, but Govee currently doesn't give any commands for this. If it ever does get added, I'll will for sure support it (since I would want it too)


VS Code extension fileservices no other name as default

Bicep version
vs code extension v0.31.92
Describe the bug
I want to create a storageaccount/fileservices resource with parent and a custom name. But the extension reports
The property "name" expected a value of type "'default'" but the provided value is of type `"'profiles'".bicep[BCP036](https://aka.ms/bicep/core-diagnostics#BCP036)

my code is simple:
resource profiles 'Microsoft.Storage/storageAccounts/fileServices@2023-05-01' = {
  parent: stgaccount
  name: 'profiles'
}

To Reproduce
use that code to create a fileservices resource within your storage account
Additional context
Full code
resource stgaccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
  name: stgName
  location: location
  sku: {
    name: 'Standard_ZRS'
  }
  kind: 'FileStorage'
  properties: {
    dnsEndpointType: 'Standard'
    publicNetworkAccess: 'Disabled'
    minimumTlsVersion: 'TLS1_2'
    allowBlobPublicAccess: false
    allowSharedKeyAccess: true
    largeFileSharesState: 'Enabled'
    networkAcls: {
      defaultAction: 'Deny'
      bypass: 'AzureServices'
      virtualNetworkRules: []
      ipRules: []
    }
  }
}

resource profiles 'Microsoft.Storage/storageAccounts/fileServices@2023-05-01' = {
  parent: stgaccount
  name: 'profiles'
}

The Microsoft.Storage/storage accounts/fileServices resource configures and enables file storage for the account but is not a file share. There is a separate Microsoft.Storage/storageAccounts/fileServices/shares for that.
Please see https://github.com/Azure/azure-quickstart-templates/blob/master/quickstarts/microsoft.storage/storage-file-share/main.bicep for an example of how to create a named file share.


admin view: health check analysis

add admin only view to analyse health check results of the last month

count by check_labels
count by day and label

see #354


Add reshake into Built with... list

Adding another lib that uses the awesome styled-components. (related)

Awesomeeee, thanks!


Improve TypeScript definitions

Since the library doesn't modify the points you pass into it in any way and returns an array of points you pass into it, the types should reflect that.
You don't need to pass in the generic argument when using it since TypeScript will infer the type from the arguments.
This is a QoL improvement that doesn't force you to cast back to your type after using the simplify function.

Great, thank you!

Hi, I came here to make the same commit as @are :)
Just a reminder then that the package on NPM still includes the earlier typings.

Hi!
Would you be able to push those changes to NPM, please?


Empty download list

I have tons of downloads but all of them are blank items on the list
The Downloads work however.

I'm able to reproduce this bug by downloading an album and clearing the Jellyfin cache within the app.

Do they show up again as soon as you view and load the respective albums?

Yeah this figures. Due to the way Fintunes is architected, the metadata of the tracks is stored separately from the audio file. This means when you delete the metadata cache, the file loses the data it's associated with. The metadata could be stored along with the audio file, but this also means keeping the two in sync, which I'm not a huge fan of. Some rearchitecturing might come in the future that syncs all tracks with Jellyfin at once, since there have been other problems as a result of this model.
Until then, I'll leave this issue open for people with a similar problem.

The file download from Jellyfin already contain the album data cz I embed all data into my music

That's true and it's an interesting technical solution. However, I'd like to leave all the metadata parsing for the different file formats to Jellyfin if possible. There's a whole minefield of different formats (ID3, Vorbis comments, iTunes tags, etc.) that requires tons of implementation, and they might mismatch whatever is in Jellyfin. If there is a more robust metadata cache, it will solve this problem, along with a host of other ones.


Where are the docs for Cloud Trust hybrid deployment?

Windows 10 21H2 was released. This is the Windows release that enabled Windows Hello for Business Cloud Trust hybrid deployments.
https://blogs.windows.com/windowsexperience/2021/07/15/introducing-the-next-feature-update-to-windows-10-21h2/
Where are the docs for Cloud Trust hybrid deployment model? This page mentions that more information will be available... "Windows Hello for Business is introducing a new trust model called cloud trust"
[Enter feedback here]

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 87e5f5f1-16cf-57e2-bdfc-b090d90437b1
Version Independent ID: 1662c47f-12cb-147d-25f0-dee98b6c7722
Content: Windows Hello for Business Deployment Prerequisite Overview - Windows security
Content Source: windows/security/identity-protection/hello-for-business/hello-identity-verification.md
Product: w10
GitHub Login: @mapalko
Microsoft Alias: mapalko

This feature was delayed from 21H2 and is now targeting early 2022 for release. This will be in a patch to Windows 10 21H2. There is a note under Hybrid deployments section of this page indicating the delay. The docs will be updated with deployment information when the functionality ships.


mj-image in mj-group does not respect width or CSS min-width on Android Gmail

Hello,
I am experiencing a rendering issue with Android clients when trying to render an mj-image inside of an mj-group; the Android clients do not seem to care about the width MJML attribute or the min-width CSS attribute. This leads to the image having a distorted aspect ratio when the screen size begins to shrink (see screenshots).
Reproduction Steps:

Use mjml2html to compile the following MJML to HTML:

<mjml>
    <mj-head>
        <mj-attributes>
            <mj-all font-family="Helvetica, Arial, sans-serif"/>
            <mj-text font-size="16px"
                     color="#414247"
                     line-height="22px"/>
        </mj-attributes>
        <mj-style>
            p {
                margin: 0;
            }
        </mj-style>
    </mj-head>
    <mj-body>
        <mj-section padding="0 0 10px 0"
                    border-radius="4px">
            <mj-group width="70%">
                <mj-column vertical-align="middle"
                           width="25%">
                    <mj-image
                            src="https://storage.googleapis.com/accounts-content/590789031630f717a458c889-portrait_original-e6a96d18-df1c-4cc2-842b-af3a1e196655.jpg"
                            border-radius="50%"
                            height="48px"
                            width="48px"
                            align="right"
                            padding="10px 15px 10px 25px"/>
                </mj-column>
                <mj-column vertical-align="middle"
                           width="75%">
                    <mj-text color="#023082"
                             padding="0 0 2px 0"
                             align="left">
                        Drake
                    </mj-text>
                    <mj-text font-size="13px"
                             color="#717171"
                             padding="2px 0 0 0"
                             line-height="18px"
                             align="left">
                        Marketing & Communications Manager
                    </mj-text>
                </mj-column>
            </mj-group>
            <mj-column width="30%"
                       vertical-align="middle">
                <mj-button background-color="#2637DE">CTA!</mj-button>
            </mj-column>
        </mj-section>
    </mj-body>
</mjml>

Copy and paste the outputted HTML into Litmus
See expected behaviour in iPhone screen captures and observed behaviour in Android screen captures

Expected behavior:

When screen shrinks, padding should shrink and image width should be respected

Observed behavior:

When screen shrinks on Android, image width gets reduced, resulting in a distorted aspect ratio

Screenshots and GIFs
iPhone screenshot with expected image width

Android 6.0 (Android 6.0) with distorted aspect ratio*

Gmail App (Android 6.0) with distorted aspect ratio*

Gmail App IMAP (Android 4.4) with distorted aspect ratio

MJML version:
v4.0.2
Email clients the bug is seen on:

Android 6.0 (Android 6.0)
Gmail App (Android 6.0)
Gmail App IMAP (Android 4.4)

Hey @10kc-zack,
That's a weird one because the is  auto, I wonder if it's an issue due to the padding, can you try to set the padding to 0 on mj-image?

Hi @10kc-zack this has been fixed in the new release mjml4.2-beta, which you can install with npm install mjml, you can check if it solves the problem

@kmcb777 Thanks for this fix! Confirmed fixed on the following email clients, using Email on Acid:

iPhone X (iOS 11)
iPhone 5S (iOS 11)
iPhone 6 (iOS 10)
iPhone 6 Gmail (iOS 10)
iPhone 6+ Gmail (iOS 10)
iPhone 7 (iOS 10)
iPhone 7 Outlook (iOS 11)
iPhone 7 (iOS 11)
iPhone 8 (iOS 11)
iPhone SE (iOS 10)
iPhone SE (iOS 11)

Example before and after diff:
Before

After

@10kc-zack Hi, just wanted to inform you that we had to revert this fix. This prevented images from shrinking on mobile. After further investigation, the reason why the image was too thin on some clients in your example is that the column itself was getting too thin, so with your padding the image couldn't be wider than that as it's limited by its container width


Add watchOS2 as platform

Hi,
I use SwiftyJSON in another CocoaPods podspec as dependency. But since Xcode 7 the lint checker fails, because my Podfile supports the watchOS2 platform and SwiftyJSON doesn't.
I get the following error:
- ERROR | [watchOS] Encountered an unknown error (The platform of the target `Pods` (watchOS 2.0) is not compatible with `SwiftyJSON (2.3.0)`, which does not support `watchos`.) during validation.

I saw there is already a pull request for this problem. #320

It's merged, watchOS2 should be working properly.
Feel free to reopen this issue if there are any more issues.
:smile:


form fill not working, only displays mirror image, app this app has been degraded, ie., a kill switch has been used

It appears that upon forking solid/form-playground, it mysteriously stopped working due to changes that were made to mashlib, however, this amounts to a kill switch, whereas, all of the features mysteriously stopped working due to editing of the code in contravention of the open source github policies.

It is alleged that the mashlib build deleted everything, it is not hard to imagine how that happened!

more to come!

I will publish my thoughts here:
https://inrupt.community
https:inrupter.community
https://inrupters.com
https://inrupters.net
https://inrupters.info
https://inrupters.org


Better bug report template

A simple but better bug report template to allow easier reports using yml.

If accepted, I will do for the feature requests and pull requests.

Hey, thanks for the PR!
there are a couple of tweaks I’d love to see in the bug report template:

What version of Better Auth are you using?
Is this something better suited for Discord?
(Feel free to join the community here: {link})
Auth config (if applicable):
If you haven’t already shared a reproducible example or don’t think it’s unrelated, please include your auth config. Make sure to remove any sensitive information.

@Bekacru updated

thanks!


URL's aren't formatted correctly

Need to handle URLs currently something like megamaker.co appears as megamaker.co|megamaker.co
eg

So what is really happening is megamaker.co shows up as <http://megamaker.co|megamaker.co>
But, I am clearing out the <>
What needs to be done is to clear out everything till the |
(Working on this)


Add limit at method explode

add limit at method explode when only search the first element for improve performance (little, but ...)

No plans to add right now.


Bus should not route on alleys (Ruelle)

See the screenshot (The road is Verdun street in front of the Verdun station)

image of the full route:


CMS for contribute

similar to whitelist

Items for @Luivatra

IDO timestamp required to indicate when staking first unlocks (this may require some calculation)
Price

@noob77777 shooting for 16th, by ergogames need


Markdown Preview Under Working Files Should be Sticky

Add a markdown (.md) file to the Working Files section
Under Working Files, right-click on this file and select "Open Preview" (you see preview)
Select another file so that the markdown file is out of view
Under Working Files, select this file again
Actual behavior:  you see the markdown source, not the preview
Preferred behavior:  you see the preview of the markdown file
In general, it would be useful if there were a way to pin the markdown preview so that one could easily switch back to it.

In June you can "pin" any kind of editor to make it durable.


API limits reached when using AlpacaBroker

Hi,
I noticed this in version 2.2.0 and not sure if this is resolved in the upcoming release 3.0.0 but it seems like the Broker.sync() is called for each event and when using AlpacaLiveFeed with subscription to Trades, it makes too many calls to the broker.sync(). Because of this, it hits the API limits. I've tried upgrading the Alpaca account but it doesn't have increased limits for account API calls.
Is this a known issue? If not, any way to fix this?
Thanks

This can happen if you use high frequency data (like live quotes) and are not allowed too many API calls (I believe for Alpaca that also depends on the type of account you have). For Bar data (even 1 second bars) I didn't witness it yet.
Some other broker implementations throttle the sync, so it is not calling the real broker API's too often. This logic can also be added to the AlpacaBroker (or perhaps have all live Brokers inherit from an abstract class that takes care of this). Will put it on the back log.


Add Kris Kamau to Contributors list

Hi @Roshanjossey, I feel great about it! I've worked on Github before with school projects and stuff but I never managed to set foot into OSS because it always feels inaccessible and the knowledge gap between what I have and what I see is tremendous.  Thanks a lot!

I’d urge you to continue contributing to other open source projects.
We also have a slack team to help/mentor people trying to contribute to open source projects.
You can join the team by going to https://goo.gl/PM1Jdh


Missing method Regex::captures_at

The Regex type has _at variants of most searching methods, except it doesn't have captures_at. This seems like an oversight.

I'm currently writing a Rust equivalent of Apple's Scanner, because I want something that lets me quickly do ad-hoc parsing of input for Advent of Code, and one of the things I'm adding to it is a scan_regex() method. I wanted to be able to return a regex::Captures object, but also I thought it would be nice to allow the regex to know about surrounding context (since I'm matching it at an offset into the source string).
That said, since creating this issue, I realized this crate doesn't support look-around assertions, so the ability to see context pretty much just affects the behavior of ^ and \A, so ultimately it's not really very important.
But the core idea here is I'm taking a caller-supplied Regex and matching it in a substring of a caller-supplied larger string, and I want to return a regex::Captures to my caller, and it seems I can't do that right now while allowing the regex to see the surrounding context.

Gotya. Yeah, that makes sense. A PR that adds it to ::Regex and ::bytes::Regex with a test or two would be welcome.

This could work: https://docs.rs/fancy-regex/latest/fancy_regex/struct.Regex.html#method.captures_from_pos

I have an additional requirement: I’d like to match at exactly a given index. That could be achieved via either a flag (JavaScript has y for this purpose) or a special anchor that matches at the end of the previous match.
My use case is tokenization: https://users.rust-lang.org/t/matching-a-regex-at-a-particular-index/86070/2

That is a separate issue entirely and is unlikely to be supported in the regex crate API. It will be available in regex-automata once #656 is done though, assuming I'm understanding you correctly. A concrete example with inputs, actual output and desired output would be much clearer.

a special anchor that matches at the end of the previous match.

I personally consider this a very nutty thing to do.
regex-automata will support this by simply making it possible to execute an anchored search anywhere. That is, ^ only matches at position 0, but an anchored search is only required to produce matches starting at the place where the search started. They are orthogonal things, but it is what it sounds like you're after here.

A concrete example with inputs, actual output and desired output would be much clearer.

This is what I have so far (my first day of programming Rust, so it’s likely I have overlooked something; I’ll need the capture groups later):
use fancy_regex::Regex;
fn main() {
    let re = Regex::new(r"^((?P<emph>_)|(?P<ex>x))").unwrap();
    let text = "_x x";

    let mut index = 0usize;
    loop {
        match re.captures_from_pos(text, index).expect("TODO") {
            None => {break}
            Some(captures) => {
                let m = captures.get(0).unwrap();
                println!("TOKEN: {}", &text[m.start()..m.end()]);
                index = m.end();
            }
        }
    }
}

Actual output:
TOKEN: _

Output without ^:
TOKEN: _
TOKEN: x
TOKEN: x

Desired output:
TOKEN: _
TOKEN: x


Bug with Gates/Policies (Very weird bug?)

Laravel Version: 5.5.17
PHP Version: 7.0.23
Database Driver & Version: MYSQL 5.7

Description:
The bug happens when I use hyphen to define gates and use multiple parameters. If I remove the hyphen it works perfectly.
Steps To Reproduce:

I've created a simple gate on AuthServiceProvider:

Gate::define('manager-staff', function ($account, $store) {             return \DB::table("users_roles")->where("store_id",$store->id)             ->where("user_id", $account->user->id)             ->whereIn('role_id', [1, 2])->exists();         });

Try to use this gate on a controller:
if (\Gate::allows('manager-staff', [$store])) {   dd("a"); }

If I remove the hyphen of the word "manager-staff" to "managerstaff" it works. With the hyphen I got the exception:
Missing argument 2 for App\Providers\AuthServiceProvider::App\Providers{closure}(),

Can't replicate your issue, works fine for me.

Please seek help on the forums, looks like it's something in your project.


HMR doesn't work when running multiple SvelteKit apps

Describe the bug
When running two SvelteKit apps in dev mode, only one of them will have functioning HMR. The problem is caused by the fact that both apps are trying to use the same port 24678 for HMR.
When using Vite directly, it is possible to override the port. SvelteKit doesn't allow it, providing the following explanation:

The value for kit.vite.server.hmr specified in svelte.config.js has been ignored. This option is controlled by SvelteKit.

Expected behavior

Multiple SvelteKit apps should work simultaneously and without interference
vite.server.hmr options should be configurable

Information about your SvelteKit Installation:

Diagnostics
  System:
    OS: macOS 11.4
    CPU: (8) x64 Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz
    Memory: 236.02 MB / 16.00 GB
    Shell: 5.8 - /bin/zsh
  npmPackages:
    @sveltejs/adapter-static: 1.0.0-next.13 => 1.0.0-next.13
    @sveltejs/kit: 1.0.0-next.118 => 1.0.0-next.118
    svelte: 3.38.3 => 3.38.3

vite: { server: { hmr: { port: some_port_number } } } in svelte.config.js does work, but not, it looks like, when using --https, which I assume you are.
The code in question is: https://github.com/sveltejs/kit/blob/1b134165e6b6aa73f93a8c513adf79f4593aaef2/packages/kit/src/core/dev/index.js#L121
I don't think there's a reasonable way to get the browser to automatically accept the certificate if the websocket connection is on a different port (and therefore a different origin) than the main server. However, there shouldn't be a collision with the HMR ports across different --https apps unless there is also a collision with the apps themselves.
Do you have more details about your reproduction? Are you seeing something else?

I don't use https flag.
My setup is pretty simple and reproduction is straightforward: start two SvelteKit apps. Both of them will try to use the same port for HMR (24678), which will result in only one app's HMR working.
In fact, the reproduction can be simplified further: you only need one app, but start it on different ports. Only one of the apps will get HMR (or none - in case you already have a SvelteKit app running).

I meant a reproduction for getting that error about overriding the Vite setting. When I do that, the setting is respected.

You are right, the HMR port can be set without issues. I must have been trying to set vite.server.hmr, not vite.server.hmr.port.
I am sorry to waste your attention.

That being said - it would be better if we could run multiple SvelteKit apps with HMR without extra configuration.


(BUG) [Native/Android] The app is crashed on the authentication screen after closing the "Complete action using" pop up

Description: The app is crashed on the authentification screen after closing (Press the Back button on the device) the "Complete action using" popup
Steps to reproduce:

Launch  the App
Tap on the "Already have a Wallet? Log in" button.
Tap on the Log in with Google button
Tap on the Back button.
Pay attention to the result

Expected result:
The app is not crashed on the authentification screen after closing the "Complete action using" popup
Actual result:
The app is crashed on the authentification screen after closing the "Complete action using" popup
Environment:  Version 1.11.6
Devices list: Huawei P20 // Android 9
Attachments:
https://www.dropbox.com/s/8h7fc3xb637sbec/Logining in the App.mp4?dl=0
https://app.zenhub.com/files/166818382/8545a0cd-6ad2-4630-aefc-a9f29544a0e4/download

The original error seems related to react-native-svg:
    --------- beginning of crash
2021-01-15 10:24:03.730 17313-17313/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: org.gooddollar, PID: 17313
    java.lang.IllegalStateException: java.lang.NoSuchFieldException: fill
        at com.horcrux.svg.a0.a(Unknown Source:92)

Here they suggest a fix for this by adding -keep public class com.horcrux.svg.** { *; } to proguard-rules.pro
https://github.com/react-native-svg/react-native-svg/issues/1061

@sirpy
Is still reproduced.
Checked on the Sony G8232 Xperia XZS // Android 8
Environment: Version 1.11.6 (948)
Video:  https://www.dropbox.com/s/a7774h2ayolasfs/CrashAppSonyXperia.mp4?dl=0
Logs: https://app.zenhub.com/files/166818382/3ee3d52b-1dfc-4e84-90e8-88ebaa6d4c92/download

@MarianoAmado please verify you fix is working by compiling a release version locally
if issue still persist try to disable proguard and lets see if this is the issue

@sirpy
The issue is not reproduced
Checked on the App Version 1.11.6 (964)
Is there any other issue that should be fixed?

no


Move HTTP::Multipart and HTTP::Formdata to MIME namespace

The multipart message format is part of the MIME standard and used by a variaty of applications, not just HTTP. I suggest to rename the HTTP::Multipart type to MIME::Multipart (the MIME namespace has been added in #5765).
Similarly, HTTP::Formdata as an implementation of multipart/formdata should also be renamed to MIME::Formdata.

formdata is an HTTP spec, multipart is a MIME (originally used in email) spec.

More recent RFCs for multipart/formdata are https://tools.ietf.org/html/rfc2388 and https://tools.ietf.org/html/rfc7578 and they specifically state that it "can be used by a wide variety of applications and transported by a wide variety of protocols". It's not specific to HTTP (although it started with HTTP/HTML and that's the most prominent use case).

It should stay in http.

So MIME::Multipart and HTTP::Formdata?

Yep.

This can be closed. See #7085


fix: update to eye v9.6.5

fix: update to eye v9.6.5

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

npm package (@latest dist-tag)
GitHub release
v12.3.5

Your semantic-release bot :package::rocket:


add infra id to harness-variables.md

add infra identifier variable to documented list of harness variables
Harness Developer Pull Request
Thanks for helping us make the Developer Hub better. The PR will be looked at
by the maintainers.
What Type of PR is This?

[ ] Issue
[ ] Feature
[x] Maintenance/Chore

If tied to an Issue, list the Issue(s) here:

Issue(s)

House Keeping
Some items to keep track of. Screen shots of changes are optional but would help the maintainers review quicker.

[ ] Tested Locally
[ ] Optional Screen Shoot.

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app


In vue3 vite, can't run with this error

Hi,
For future use-cases, can you please provide reproducible examples?

[x] Should be fixed in v4.x


Add scroll parameter to reindex. Closes #3253

Sorry for all of the white space noise in the pull request, looks like it was added from the re-gen.
Added a patch file to the local json spec, awaiting fix in elasticsearch repo: https://github.com/elastic/elasticsearch/pull/31316

Backported to 6.x


I'm building an alternative that works  for Twitter API v2 x using Go

I'm building a CLI tool that works as a modern alternative for this one. works with Twitter API v2
link : devhindo/x

Nice! I’m working on an alternative in Crystal, which will be integrated into this library: https://github.com/sferik/x-crystal

Interesting!

SO this project is officially dead? I just spent th ebeter part of an hour settign everythign up and sending my first update only to be greeted with this message:
You currently have access to a subset of Twitter API v2 endpoints and limited v1.1 endpoints (e.g. media post, oauth) only. If you need access to this endpoint, you may need a different access level. You can learn more here: https://developer.twitter.com/en/portal/product
Does that mean I did all of this for nothing and this gem is toast?

@cyberfunk I think it's deprecated due to the latest Twitter API updates which contained major changes that required constructing a new tool built on the new API. You can check sferik/x-ruby or my tool devhindo/x.

@cyberfunk I think it's deprecated due to the latest Twitter API updates which contained major changes that required constructing a new tool built on the new API. You can check sferik/x-ruby or my tool devhindo/x.

Thanks! Will install and try the update and compare with your project as well!

@cyberfunk I think it's deprecated due to the latest Twitter API updates which contained major changes that required constructing a new tool built on the new API. You can check sferik/x-ruby or my tool devhindo/x.

Thanks! Will install and try the update and compare with your project as well!

Okay, feel free to ask if you need any help.

@cyberfunk I think it's deprecated due to the latest Twitter API updates which contained major changes that required constructing a new tool built on the new API. You can check sferik/x-ruby or my tool devhindo/x.

Thanks! Will install and try the update and compare with your project as well!

Okay, feel free to ask if you need any help.

Thanks I've been to the end of the internet and back trying to find a replacement for the old Abraham library that worked flawlessly with PHP, Cron and API 1.1 for many years. Hopefully my search is over with one of these options and Cron😅 I need to start promoting my music again and use this to post recurring tweets daily.

@cyberfunk I think it's deprecated due to the latest Twitter API updates which contained major changes that required constructing a new tool built on the new API. You can check sferik/x-ruby or my tool devhindo/x.

Thanks! Will install and try the update and compare with your project as well!

Okay, feel free to ask if you need any help.

Thanks I've been to the end of the internet and back trying to find a replacement for the old Abraham library that worked flawlessly with PHP, Cron and API 1.1 for many years. Hopefully my search is over with one of these options and Cron😅 I need to start promoting my music again and use this to post recurring tweets daily.

I use my tool daily and it works just fine for posting text tweets. And its setup doesn't take a minute.

I ran this code in terminal:
ruby test.rb
test.rb has this exact code inside and nothing more:
require "x"
x_credentials = {
api_key:             "INSERT YOUR X API KEY HERE",
api_key_secret:      "INSERT YOUR X API KEY SECRET HERE",
access_token:        "INSERT YOUR X ACCESS TOKEN HERE",
access_token_secret: "INSERT YOUR X ACCESS TOKEN SECRET HERE",
}
post = x_client.post("tweets", '{"text":"Hello, World! (from @gem)"}')
When I run this it gives me an error:
undefined local variable or method `x_client' for main (NameError)

I replaced the placeholders with my actual tokens in the above example.

Git it workign thanks!!!


Same name tags not parsing correctly

note the content. it's supposed to be ""
i don't get this bug when not closing my tag with "[/chaine]"
my tag was simple
shortcode.add('chaine', function(tag) {
return tag.content;
});
i hope this was descriptive enough

note the content. it's supposed to be ""
i don't get this bug when not closing my tag with "[/chaine]"
my tag was simple
shortcode.add('chaine', function(tag) {
return tag.content;
});
i hope this was descriptive enough

view my fix on #14


codata

For example
codata Stream : Type -> Type
| cons : (e : a) -> (Stream a) -> Stream a

ones : Stream Int
ones = cons 1 ones

We will need some time to research what was co-inductive

close for now


ApptentiveLogMonitor: Adds debug compiler flag to startSessionWithBaseURL to prevent pasteboard notification

Reason:
In iOS 14 users can now see when we are calling the pasteboard. When the Apptentive sdk fails to start ApptentiveLogMonitor, users are made aware of this, and believe the app is snooping on them.
After further investigation, I have found ApptentiveLogMonitor constantly fails to start on iOS 13 & 14 (haven't been able to verify iOS 12 and below) which leads to every time you open the app ApptentiveLogMonitor looking at the clipboard and then if it is of a certain format send that code off to Apptentive servers.
A malicious user could send anything to the /debug/verify which could impact the Apptentive service. This PR stops release build of the application from looking at the pasteboard, and from sending anything of suitable format to the apptentive endpoint /debug/verify
Related Issue:
https://github.com/apptentive/apptentive-ios/issues/274
Changes:
Adds debug compiler flag around debug only code in Apptentive

We appreciate the heads up on this! I've been able to reproduce this with current App Store downloaded apps on an iOS 14 device, so it's something we'll be releasing a fix for very shortly.
The route we're taking is to entirely remove the Log Monitor feature from the iOS SDK. The primary use case was for folks who weren't familiar with using Console.app on a connected Mac to get log information back to us. That doesn't really apply to the typical person running debug builds, and it does add some complexity and log noise to our SDK.

@frankus thats awesome to here!
Thanks for the heads up, do you want me to close this PR?

Sure. Thanks again for bringing this to our attention.


Crash on "stop & remove" container

Tried to stop & remove container with debian:jessie from official repository.
Clicked on the (X) button near the container name and got the following:
server error
500
Cannot destroy container pensive_bardeen: Driver aufs failed to remove root filesystem 618884059ee9a1e885325d052b8dd956a9b2c67ed63eeb1f4a1ff87313f0a3d3: rename /mnt/sda1/var/lib/docker/aufs/mnt/618884059ee9a1e885325d052b8dd956a9b2c67ed63eeb1f4a1ff87313f0a3d3 /mnt/sda1/var/lib/docker/aufs/mnt/618884059ee9a1e885325d052b8dd956a9b2c67ed63eeb1f4a1ff87313f0a3d3-removing: read-only file system
Kitematic 0.8.7
Docker Engine 1.8.3
Docker Machine 0.4.1

@levchik Thanks for this. We will look into it.


Add minimum and maximum tls version support in tls config

Signed-off-by: Ashmita152<EMAIL_ADDRESS>
Which problem is this PR solving?

Closes https://github.com/jaegertracing/jaeger/issues/3566

Short description of the changes

Add support for minimum tls version

👏


high_straight works

High straight implemented

thats too slow.
git better
return 40 if (np.prod(dice), np.sum(dice)) in [(120, 15), (720, 20)] else 0


Generics not working for component definitions when upgrading to version 3+

If I upgrade to version 3.2.0 from 2.3.3, generics stop working in my components
import * as tsx from 'vue-tsx-support';
import { Prop, Component } from 'vue-property-decorator';

interface IMyProps<TType> {
  items: TType[];
}

@Component
export default class AList<TType> extends tsx.Component<IMyProps<TType>> {
  // ...
}

With 2.3.3 I can use AList in other .tsx files and provide any kind of array for items and it will works
With 3.2.0 all my other components using AList are giving me error because TType of AList is inferred to be of type unknown instead

This code works with<EMAIL_ADDRESS>(with<EMAIL_ADDRESS>or 4.3.5)
Can you show me a minimal reproduction ?
import { Component, Prop } from "vue-property-decorator";
import * as vuetsx from "vue-tsx-support";

interface ListProp<T> {
  items: T[];
}

@Component
class AList<T> extends vuetsx.Component<ListProp<T>> {
  @Prop()
  items!: T[];
}

const items: number[] = [1, 2, 3];
<AList items={items} />;

BTW, you can obtain typed component like below.
const ANumberList = AList as new () => AList<number>;

<ANumberList items={[1, 2, 3]} />;

Thank you for the answer - I'll see if I can followup with a minimal reproduction example.

Hello @wonderful-panda and @LolliDepp
I can confirm generic types are not correctly working. See the screenshot.

As you can see, items is (incorrectly) typed as (JSX attribute) items: (string | number)[], but it should be typed as number[] as we specify the generic type parameter number. The array [1, 2, 3, '2'] is accepted while it should not. This also leads to other errors when extending parent classes. I cannot provide the code to reproduce the error with the class, but the TypeScript server indicates :

The expected type comes from property 'items' which is declared here on type 'IntrinsicAttributes & (CombinedTsxComponentAttrs<{}, ListProp<string | number>, {}, {}, InnerScopedSlots<{}>, true> & {})'

Here is the code to reproduce (based on @wonderful-panda, but I think you did not check correctly the type, happens :)) :
/* eslint-disable max-classes-per-file */
import { Component, Prop } from 'vue-property-decorator';
import * as vuetsx from 'vue-tsx-support';

interface ListProp<T> {
  items: T[];
}

@Component
class AList<T extends number | string> extends vuetsx.Component<
  ListProp<T>,
  {}
> {
  @Prop()
  items!: T[];
}

@Component
class Test extends vuetsx.Component<{}> {
  render() {
    const items = [1, 2, 3, '2'];
    // enable this to check TypeScript error
    // const items = [1, 2, 3, '2', new Date()];
    return <AList<number> items={items} />;
  }
}


Error 500 when passing a Serializer from TTP to RouterOS

Validity Version
3.0.2
NetBox Version
4.1.1
Python Version
3.12.3
Steps to Reproduce
Create a serializer using TTP, then changing that TTP Serializer to a RouterOS serializer.
Maybe linked to that : https://github.com/amyasnikov/validity/discussions/119 IDK
Traceback

Thank you 😄
Arthur

Hey @aascedu, thanks for the issue, fixed


RTSP does not extract user and password when using external auth server #2700

Which version are you using?
v1.3.0
Which operating system are you using?

[ ] Linux amd64 standard
[ ] Linux amd64 Docker
[ ] Linux arm64 standard
[ ] Linux arm64 Docker
[ ] Linux arm7 standard
[ ] Linux arm7 Docker
[ ] Linux arm6 standard
[ ] Linux arm6 Docker
[ ] Windows amd64 standard
[ ] Windows amd64 Docker (WSL backend)
[ ] macOS amd64 standard
[x] macOS amd64 Docker
[ ] Other (please describe)

Describe the issue
RTSP does not extract user and password when using an external auth server. I have set up the external server and mediamtx does not send in the payload the user and passwords. I test with rtmp and it works.
Describe how to replicate the issue

start the server in a container way and setup an external auth server

version: '3'
services:
  mediamtx:
    image: bluenviron/mediamtx:latest-ffmpeg
    ports:
      - "8554:8554"
      - "8002:8000"
      - "8001:8001"
      - "1935:1935"
      - "8888:8888"
      - "8889:8889"
      - "8890:8890/udp"
    environment:
      #- MTX_PROTOCOLS="udp, multicast, tcp"
      - MTX_API=yes

Default config file
###############################################
# Global settings

# Settings in this section are applied anywhere.

###############################################
# Global settings -> General

# Verbosity of the program; available values are "error", "warn", "info", "debug".
logLevel: info
# Destinations of log messages; available values are "stdout", "file" and "syslog".
logDestinations: [stdout]
# If "file" is in logDestinations, this is the file which will receive the logs.
logFile: mediamtx.log

# Timeout of read operations.
readTimeout: 10s
# Timeout of write operations.
writeTimeout: 10s
# Size of the queue of outgoing packets.
# A higher value allows to increase throughput, a lower value allows to save RAM.
writeQueueSize: 512
# Maximum size of outgoing UDP packets.
# This can be decreased to avoid fragmentation on networks with a low UDP MTU.
udpMaxPayloadSize: 1472

# HTTP URL to perform external authentication.
# Every time a user wants to authenticate, the server calls this URL
# with the POST method and a body containing:
# {
#   "ip": "ip",
#   "user": "user",
#   "password": "password",
#   "path": "path",
#   "protocol": "rtsp|rtmp|hls|webrtc",
#   "id": "id",
#   "action": "read|publish",
#   "query": "query"
# }
# If the response code is 20x, authentication is accepted, otherwise
# it is discarded.
externalAuthenticationURL: http://kong:8000/functions/v1/auth

# Enable the HTTP API.
api: yes
# Address of the API listener.
apiAddress: <IP_ADDRESS>:9997

# Enable Prometheus-compatible metrics.
metrics: no
# Address of the metrics listener.
metricsAddress: <IP_ADDRESS>:9998

# Enable pprof-compatible endpoint to monitor performances.
pprof: no
# Address of the pprof listener.
pprofAddress: <IP_ADDRESS>:9999

# Command to run when a client connects to the server.
# This is terminated with SIGINT when a client disconnects from the server.
# The following environment variables are available:
# * RTSP_PORT: RTSP server port
# * MTX_CONN_TYPE: connection type
# * MTX_CONN_ID: connection ID
runOnConnect:
# Restart the command if it exits.
runOnConnectRestart: no
# Command to run when a client disconnects from the server.
# Environment variables are the same of runOnConnect.
runOnDisconnect:

###############################################
# Global settings -> RTSP

# Allow publishing and reading streams with the RTSP protocol.
rtsp: yes
# List of enabled RTSP transport protocols.
# UDP is the most performant, but doesn't work when there's a NAT/firewall between
# server and clients, and doesn't support encryption.
# UDP-multicast allows to save bandwidth when clients are all in the same LAN.
# TCP is the most versatile, and does support encryption.
# The handshake is always performed with TCP.
protocols: [udp, multicast, tcp]
# Encrypt handshakes and TCP streams with TLS (RTSPS).
# Available values are "no", "strict", "optional".
encryption: "no"
# Address of the TCP/RTSP listener. This is needed only when encryption is "no" or "optional".
rtspAddress: :8554
# Address of the TCP/TLS/RTSPS listener. This is needed only when encryption is "strict" or "optional".
rtspsAddress: :8322
# Address of the UDP/RTP listener. This is needed only when "udp" is in protocols.
rtpAddress: :8000
# Address of the UDP/RTCP listener. This is needed only when "udp" is in protocols.
rtcpAddress: :8001
# IP range of all UDP-multicast listeners. This is needed only when "multicast" is in protocols.
multicastIPRange: <IP_ADDRESS>/16
# Port of all UDP-multicast/RTP listeners. This is needed only when "multicast" is in protocols.
multicastRTPPort: 8002
# Port of all UDP-multicast/RTCP listeners. This is needed only when "multicast" is in protocols.
multicastRTCPPort: 8003
# Path to the server key. This is needed only when encryption is "strict" or "optional".
# This can be generated with:
# openssl genrsa -out server.key 2048
# openssl req -new -x509 -sha256 -key server.key -out server.crt -days 3650
serverKey: server.key
# Path to the server certificate. This is needed only when encryption is "strict" or "optional".
serverCert: server.crt
# Authentication methods. Available are "basic" and "digest".
# "digest" doesn't provide any additional security and is available for compatibility reasons only.
authMethods: [basic]

###############################################
# Global settings -> RTMP

# Allow publishing and reading streams with the RTMP protocol.
rtmp: yes
# Address of the RTMP listener. This is needed only when encryption is "no" or "optional".
rtmpAddress: :1935
# Encrypt connections with TLS (RTMPS).
# Available values are "no", "strict", "optional".
rtmpEncryption: "no"
# Address of the RTMPS listener. This is needed only when encryption is "strict" or "optional".
rtmpsAddress: :1936
# Path to the server key. This is needed only when encryption is "strict" or "optional".
# This can be generated with:
# openssl genrsa -out server.key 2048
# openssl req -new -x509 -sha256 -key server.key -out server.crt -days 3650
rtmpServerKey: server.key
# Path to the server certificate. This is needed only when encryption is "strict" or "optional".
rtmpServerCert: server.crt

###############################################
# Global settings -> HLS

# Allow reading streams with the HLS protocol.
hls: yes
# Address of the HLS listener.
hlsAddress: :8888
# Enable TLS/HTTPS on the HLS server.
# This is required for Low-Latency HLS.
hlsEncryption: no
# Path to the server key. This is needed only when encryption is yes.
# This can be generated with:
# openssl genrsa -out server.key 2048
# openssl req -new -x509 -sha256 -key server.key -out server.crt -days 3650
hlsServerKey: server.key
# Path to the server certificate.
hlsServerCert: server.crt
# By default, HLS is generated only when requested by a user.
# This option allows to generate it always, avoiding the delay between request and generation.
hlsAlwaysRemux: no
# Variant of the HLS protocol to use. Available options are:
# * mpegts - uses MPEG-TS segments, for maximum compatibility.
# * fmp4 - uses fragmented MP4 segments, more efficient.
# * lowLatency - uses Low-Latency HLS.
hlsVariant: lowLatency
# Number of HLS segments to keep on the server.
# Segments allow to seek through the stream.
# Their number doesn't influence latency.
hlsSegmentCount: 7
# Minimum duration of each segment.
# A player usually puts 3 segments in a buffer before reproducing the stream.
# The final segment duration is also influenced by the interval between IDR frames,
# since the server changes the duration in order to include at least one IDR frame
# in each segment.
hlsSegmentDuration: 1s
# Minimum duration of each part.
# A player usually puts 3 parts in a buffer before reproducing the stream.
# Parts are used in Low-Latency HLS in place of segments.
# Part duration is influenced by the distance between video/audio samples
# and is adjusted in order to produce segments with a similar duration.
hlsPartDuration: 200ms
# Maximum size of each segment.
# This prevents RAM exhaustion.
hlsSegmentMaxSize: 50M
# Value of the Access-Control-Allow-Origin header provided in every HTTP response.
# This allows to play the HLS stream from an external website.
hlsAllowOrigin: '*'
# List of IPs or CIDRs of proxies placed before the HLS server.
# If the server receives a request from one of these entries, IP in logs
# will be taken from the X-Forwarded-For header.
hlsTrustedProxies: []
# Directory in which to save segments, instead of keeping them in the RAM.
# This decreases performance, since reading from disk is less performant than
# reading from RAM, but allows to save RAM.
hlsDirectory: ''

###############################################
# Global settings -> WebRTC

# Allow publishing and reading streams with the WebRTC protocol.
webrtc: yes
# Address of the WebRTC listener.
webrtcAddress: :8889
# Enable TLS/HTTPS on the WebRTC server.
webrtcEncryption: no
# Path to the server key.
# This can be generated with:
# openssl genrsa -out server.key 2048
# openssl req -new -x509 -sha256 -key server.key -out server.crt -days 3650
webrtcServerKey: server.key
# Path to the server certificate.
webrtcServerCert: server.crt
# Value of the Access-Control-Allow-Origin header provided in every HTTP response.
# This allows to play the WebRTC stream from an external website.
webrtcAllowOrigin: '*'
# List of IPs or CIDRs of proxies placed before the WebRTC server.
# If the server receives a request from one of these entries, IP in logs
# will be taken from the X-Forwarded-For header.
webrtcTrustedProxies: []
# List of ICE servers.
webrtcICEServers2:
  # URL can point to a STUN, TURN or TURNS server.
  # STUN servers are used to obtain the public IP of server and clients. They are
  # needed when server and clients are on different LANs.
  # TURN/TURNS servers are needed when a direct connection between server and
  # clients is not possible. All traffic is routed through them.
- url: stun:stun.l.google.com:19302
  # if user is "AUTH_SECRET", then authentication is secret based.
  # the secret must be inserted into the password field.
  username: ''
  password: ''
# List of interfaces that will be used to gather IPs to send
# to the counterpart to establish a connection.
webrtcICEInterfaces: []
# List of public IP addresses that are to be used as a host.
# This is used typically for servers that are behind 1:1 D-NAT.
webrtcICEHostNAT1To1IPs: []
# Address of a ICE UDP listener in format host:port.
# If filled, ICE traffic will pass through a single UDP port,
# allowing the deployment of the server inside a container or behind a NAT.
webrtcICEUDPMuxAddress:
# Address of a ICE TCP listener in format host:port.
# If filled, ICE traffic will pass through a single TCP port,
# allowing the deployment of the server inside a container or behind a NAT.
# Using this setting forces usage of the TCP protocol, which is not
# optimal for WebRTC.
webrtcICETCPMuxAddress:

###############################################
# Global settings -> SRT

# Allow publishing and reading streams with the SRT protocol.
srt: yes
# Address of the SRT listener.
srtAddress: :8890

###############################################
# Default path settings

# Settings in "pathDefaults" are applied anywhere,
# unless they are overridden in "paths".
pathDefaults:

  ###############################################
  # Default path settings -> General

  # Source of the stream. This can be:
  # * publisher -> the stream is provided by a RTSP, RTMP, WebRTC or SRT client
  # * rtsp://existing-url -> the stream is pulled from another RTSP server / camera
  # * rtsps://existing-url -> the stream is pulled from another RTSP server / camera with RTSPS
  # * rtmp://existing-url -> the stream is pulled from another RTMP server / camera
  # * rtmps://existing-url -> the stream is pulled from another RTMP server / camera with RTMPS
  # * http://existing-url/stream.m3u8 -> the stream is pulled from another HLS server / camera
  # * https://existing-url/stream.m3u8 -> the stream is pulled from another HLS server / camera with HTTPS
  # * udp://ip:port -> the stream is pulled with UDP, by listening on the specified IP and port
  # * srt://existing-url -> the stream is pulled from another SRT server / camera
  # * whep://existing-url -> the stream is pulled from another WebRTC server / camera
  # * wheps://existing-url -> the stream is pulled from another WebRTC server / camera with HTTPS
  # * redirect -> the stream is provided by another path or server
  # * rpiCamera -> the stream is provided by a Raspberry Pi Camera
  source: publisher
  # If the source is a URL, and the source certificate is self-signed
  # or invalid, you can provide the fingerprint of the certificate in order to
  # validate it anyway. It can be obtained by running:
  # openssl s_client -connect source_ip:source_port </dev/null 2>/dev/null | sed -n '/BEGIN/,/END/p' > server.crt
  # openssl x509 -in server.crt -noout -fingerprint -sha256 | cut -d "=" -f2 | tr -d ':'
  sourceFingerprint:
  # If the source is a URL, it will be pulled only when at least
  # one reader is connected, saving bandwidth.
  sourceOnDemand: no
  # If sourceOnDemand is "yes", readers will be put on hold until the source is
  # ready or until this amount of time has passed.
  sourceOnDemandStartTimeout: 10s
  # If sourceOnDemand is "yes", the source will be closed when there are no
  # readers connected and this amount of time has passed.
  sourceOnDemandCloseAfter: 10s
  # Maximum number of readers. Zero means no limit.
  maxReaders: 0
  # SRT encryption passphrase require to read from this path
  srtReadPassphrase:

  ###############################################
  # Default path settings -> Recording

  # Record streams to disk.
  record: no
  # Path of recording segments.
  # Extension is added automatically.
  # Available variables are %path (path name), %Y %m %d %H %M %S %f (time in strftime format)
  recordPath: ./recordings/%path/%Y-%m-%d_%H-%M-%S-%f
  # Format of recorded segments.
  # Available formats are "fmp4" (fragmented MP4) and "mpegts" (MPEG-TS).
  recordFormat: fmp4
  # fMP4 segments are concatenation of small MP4 files (parts), each with this duration.
  # MPEG-TS segments are concatenation of 188-bytes packets, flushed to disk with this period.
  # When a system failure occurs, the last part gets lost.
  # Therefore, the part duration is equal to the RPO (recovery point objective).
  recordPartDuration: 100ms
  # Minimum duration of each segment.
  recordSegmentDuration: 1h
  # Delete segments after this timespan.
  # Set to 0s to disable automatic deletion.
  recordDeleteAfter: 24h

  ###############################################
  # Default path settings -> Authentication

  # Username required to publish.
  # SHA256-hashed values can be inserted with the "sha256:" prefix.
  publishUser:
  # Password required to publish.
  # SHA256-hashed values can be inserted with the "sha256:" prefix.
  publishPass:
  # IPs or networks (x.x.x.x/24) allowed to publish.
  publishIPs: []

  # Username required to read.
  # SHA256-hashed values can be inserted with the "sha256:" prefix.
  readUser:
  # password required to read.
  # SHA256-hashed values can be inserted with the "sha256:" prefix.
  readPass:
  # IPs or networks (x.x.x.x/24) allowed to read.
  readIPs: []

  ###############################################
  # Default path settings -> Publisher source (when source is "publisher")

  # allow another client to disconnect the current publisher and publish in its place.
  overridePublisher: yes
  # if no one is publishing, redirect readers to this path.
  # It can be can be a relative path (i.e. /otherstream) or an absolute RTSP URL.
  fallback:
  # SRT encryption passphrase required to publish to this path
  srtPublishPassphrase:

  ###############################################
  # Default path settings -> RTSP source (when source is a RTSP or a RTSPS URL)

  # protocol used to pull the stream. available values are "automatic", "udp", "multicast", "tcp".
  sourceProtocol: automatic
  # support sources that don't provide server ports or use random server ports. This is a security issue
  # and must be used only when interacting with sources that require it.
  sourceAnyPortEnable: no
  # range header to send to the source, in order to start streaming from the specified offset.
  # available values:
  # * clock: Absolute time
  # * npt: Normal Play Time
  # * smpte: SMPTE timestamps relative to the start of the recording
  rtspRangeType:
  # available values:
  # * clock: UTC ISO 8601 combined date and time string, e.g. 20230812T120000Z
  # * npt: duration such as "300ms", "1.5m" or "2h45m", valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h"
  # * smpte: duration such as "300ms", "1.5m" or "2h45m", valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h"
  rtspRangeStart:

  ###############################################
  # Default path settings -> Redirect source (when source is "redirect")

  # RTSP URL which clients will be redirected to.
  sourceRedirect:

  ###############################################
  # Default path settings -> Raspberry Pi Camera source (when source is "rpiCamera")

  # ID of the camera
  rpiCameraCamID: 0
  # width of frames
  rpiCameraWidth: 1920
  # height of frames
  rpiCameraHeight: 1080
  # flip horizontally
  rpiCameraHFlip: false
  # flip vertically
  rpiCameraVFlip: false
  # brightness [-1, 1]
  rpiCameraBrightness: 0
  # contrast [0, 16]
  rpiCameraContrast: 1
  # saturation [0, 16]
  rpiCameraSaturation: 1
  # sharpness [0, 16]
  rpiCameraSharpness: 1
  # exposure mode.
  # values: normal, short, long, custom
  rpiCameraExposure: normal
  # auto-white-balance mode.
  # values: auto, incandescent, tungsten, fluorescent, indoor, daylight, cloudy, custom
  rpiCameraAWB: auto
  # denoise operating mode.
  # values: off, cdn_off, cdn_fast, cdn_hq
  rpiCameraDenoise: "off"
  # fixed shutter speed, in microseconds.
  rpiCameraShutter: 0
  # metering mode of the AEC/AGC algorithm.
  # values: centre, spot, matrix, custom
  rpiCameraMetering: centre
  # fixed gain
  rpiCameraGain: 0
  # EV compensation of the image [-10, 10]
  rpiCameraEV: 0
  # Region of interest, in format x,y,width,height
  rpiCameraROI:
  # whether to enable HDR on Raspberry Camera 3.
  rpiCameraHDR: false
  # tuning file
  rpiCameraTuningFile:
  # sensor mode, in format [width]:[height]:[bit-depth]:[packing]
  # bit-depth and packing are optional.
  rpiCameraMode:
  # frames per second
  rpiCameraFPS: 30
  # period between IDR frames
  rpiCameraIDRPeriod: 60
  # bitrate
  rpiCameraBitrate: 1000000
  # H264 profile
  rpiCameraProfile: main
  # H264 level
  rpiCameraLevel: '4.1'
  # Autofocus mode
  # values: auto, manual, continuous
  rpiCameraAfMode: continuous
  # Autofocus range
  # values: normal, macro, full
  rpiCameraAfRange: normal
  # Autofocus speed
  # values: normal, fast
  rpiCameraAfSpeed: normal
  # Lens position (for manual autofocus only), will be set to focus to a specific distance
  # calculated by the following formula: d = 1 / value
  # Examples: 0 moves the lens to infinity.
  #           0.5 moves the lens to focus on objects 2m away.
  #           2 moves the lens to focus on objects 50cm away.
  rpiCameraLensPosition: 0.0
  # Specifies the autofocus window, in the form x,y,width,height where the coordinates
  # are given as a proportion of the entire image.
  rpiCameraAfWindow:
  # enables printing text on each frame.
  rpiCameraTextOverlayEnable: false
  # text that is printed on each frame.
  # format is the one of the strftime() function.
  rpiCameraTextOverlay: '%Y-%m-%d %H:%M:%S - MediaMTX'

  ###############################################
  # Default path settings -> Hooks

  # Command to run when this path is initialized.
  # This can be used to publish a stream when the server is launched.
  # This is terminated with SIGINT when the program closes.
  # The following environment variables are available:
  # * MTX_PATH: path name
  # * RTSP_PORT: RTSP server port
  # * G1, G2, ...: regular expression groups, if path name is
  #   a regular expression.
  runOnInit:
  # Restart the command if it exits.
  runOnInitRestart: no

  # Command to run when this path is requested by a reader.
  # This can be used to publish a stream on demand.
  # This is terminated with SIGINT when the path is not requested anymore.
  # The following environment variables are available:
  # * MTX_PATH: path name
  # * MTX_QUERY: query parameters (passed by first reader)
  # * RTSP_PORT: RTSP server port
  # * G1, G2, ...: regular expression groups, if path name is
  #   a regular expression.
  runOnDemand:
  # Restart the command if it exits.
  runOnDemandRestart: no
  # Readers will be put on hold until the runOnDemand command starts publishing
  # or until this amount of time has passed.
  runOnDemandStartTimeout: 10s
  # The command will be closed when there are no
  # readers connected and this amount of time has passed.
  runOnDemandCloseAfter: 10s

  # Command to run when the stream is ready to be read, whenever it is
  # published by a client or pulled from a server / camera.
  # This is terminated with SIGINT when the stream is not ready anymore.
  # The following environment variables are available:
  # * MTX_PATH: path name
  # * MTX_QUERY: query parameters (passed by publisher)
  # * RTSP_PORT: RTSP server port
  # * G1, G2, ...: regular expression groups, if path name is
  #   a regular expression.
  # * MTX_SOURCE_TYPE: source type
  # * MTX_SOURCE_ID: source ID
  runOnReady:
  # Restart the command if it exits.
  runOnReadyRestart: no
  # Command to run when the stream is not available anymore.
  # Environment variables are the same of runOnReady.
  runOnNotReady:

  # Command to run when a client starts reading.
  # This is terminated with SIGINT when a client stops reading.
  # The following environment variables are available:
  # * MTX_PATH: path name
  # * MTX_QUERY: query parameters (passed by reader)
  # * RTSP_PORT: RTSP server port
  # * G1, G2, ...: regular expression groups, if path name is
  #   a regular expression.
  # * MTX_READER_TYPE: reader type
  # * MTX_READER_ID: reader ID
  runOnRead:
  # Restart the command if it exits.
  runOnReadRestart: no
  # Command to run when a client stops reading.
  # Environment variables are the same of runOnRead.
  runOnUnread:

  # Command to run when a recording segment is created.
  # The following environment variables are available:
  # * MTX_PATH: path name
  # * RTSP_PORT: RTSP server port
  # * G1, G2, ...: regular expression groups, if path name is
  #   a regular expression.
  # * MTX_SEGMENT_PATH: segment file path
  runOnRecordSegmentCreate:

  # Command to run when a recording segment is complete.
  # The following environment variables are available:
  # * MTX_PATH: path name
  # * RTSP_PORT: RTSP server port
  # * G1, G2, ...: regular expression groups, if path name is
  #   a regular expression.
  # * MTX_SEGMENT_PATH: segment file path
  runOnRecordSegmentComplete:

###############################################
# Path settings

# Settings in "paths" are applied to specific paths, and the map key
# is the name of the path.
# Any setting in "pathDefaults" can be overridden here.
# It's possible to use regular expressions by using a tilde as prefix,
# for example "~^(test1|test2)$" will match both "test1" and "test2",
# for example "~^prefix" will match all paths that start with "prefix".
paths:
  # example:
  # my_camera:
  #   source: rtsp://my_camera

  # Settings under path "all_others" are applied to all paths that
  # do not match another entry.
  all_others:

publish with .

 ffmpeg -f avfoundation -video_size 640x480 -i "0" -c:v h264 -f rtsp -rtsp_transport tcp "rtsp://myuser:mypass@localhost:8554/mystream?user=myuser&pass=mypass"

print payload in auth server

Did you attach the server logs?

yes

Did you attach a network dump?

no

Did you try sending a 4XX error response in your authentication API endpoint? I have seen some RTSP clients like VLC does not even attempt a basic auth unless an error response is sent back by the auth endpoint.

Hello @krusadellc I have done that it works perfectly with rtmp when I send credentials it auth when they miss I send a 4xx as I mentioned in the issue Mediamtx is not sending user and pass to auth server. For now, I am send them from query params and extract from them. But I still have user and password as empty strings. The log from by auth server I am not suing VLC

Hello, i tested again but in my case the external authentication mechanism worked without any issue. Make sure to return code 400 in case of empty credentials, otherwise the client won't send credentials. You didn't post the entire log therefore it's impossible to understand whether you're implementing the server correctly or not. Here's a sample code.
package main

import (
	"encoding/json"
	"fmt"
	"net"
	"net/http"
	"context"

	"github.com/gin-gonic/gin"
)

type server struct {
	s *http.Server
}

func newServer() (*server, error) {
	ln, err := net.Listen("tcp", ":9120")
	if err != nil {
		return nil, err
	}

	ts := &server{}

	router := gin.New()
	router.POST("/auth", ts.onAuth)

	ts.s = &http.Server{Handler: router}
	go ts.s.Serve(ln)

	return ts, nil
}

func (ts *server) close() {
	ts.s.Shutdown(context.Background())
}

func (ts *server) onAuth(ctx *gin.Context) {
	var in struct {
		IP       string `json:"ip"`
		User     string `json:"user"`
		Password string `json:"password"`
		Path     string `json:"path"`
		Action   string `json:"action"`
		Query    string `json:"query"`
	}
	err := json.NewDecoder(ctx.Request.Body).Decode(&in)
	if err != nil {
		ctx.AbortWithStatus(http.StatusBadRequest)
		return
	}

	fmt.Printf("%+v\n", in)

	if in.User == "" {
		ctx.AbortWithStatus(http.StatusUnauthorized)
		return
	}

	ctx.Status(http.StatusOK)
}

func main() {
	_, err := newServer()
	if err != nil {
		panic(err)
	}
	select {}
}

Hello @aler9 thanks I solved it it was missing the 400 error when first request user is empty I see mediamtx sends another request

In releases earlier to 1.3, an error code of 401 used to work when username and password were empty. With 1.3 the error code must be 400, otherwise things don't authenticate successfully

@saket424 i just tested external authentication against v1.4.0 and it works well when the code is ether 401 or 400, there's no difference at all. Currently, the server just checks whether status code is inside range 200-299 or not:
https://github.com/bluenviron/mediamtx/blob/94953f5d22ae31056cc96c04d23c807f02c0f29c/internal/core/auth.go#L69-L73


Update README.ja.md

Fixed some sentences that seemed unnatural.

The initial version of README.js.md is contributed by @TeepaBlue.
@TeepaBlue Sama, Would you please come back and do a review?
Anyway, I will assume that suggestions in this pr is correct and merge it in 48 hours.

Thank you for your contribution!
The suggestions look nice to me and I will merge it in 48 hours.
By the way, the store page now is lack of Japanese translations and it will be wonderful if anyone can do a favor... 日本語翻訳つよつよマンほしい！


🐞 Parameters displayed incorrectly within control panel

Describe the bug.
On the Parameters page within Control Panel, the "key" and "Role name" values are displayed in the wrong place. They are stored correctly within AWS parameter store
To Reproduce

Log in to Control Panel as a superuser
Click the "List all parameters" link under superuser functions (or go to https://controlpanel.services.analytical-platform.service.justice.gov.uk/parameters/all/)
Parameters are displayed incorrectly

Expected Behaviour
The parameter key should be displayed under the "Key" column.
The role name should be displayed under the "Role name" column.
Additional context
Originally reported by a user in #ask-analytical-platform channel

PR to fix has been merged, needs to be released to prod

Deployed to dev


Fix #430 - CSV exports to include a BOM

Fix #430 - CSV exports to include a BOM
BOM_UTF8 added via the CSVExporter class.
A few existing tests rely on this class and break when adding a BOM. This PR makes them independent of whether a BOM is there or not, and adds a dedicated test for the BOM. Hope that approach is ok.
Test suite passes and using the /test_project the Japanese character ガ displays properly when opening the csv in excel.

Fix paths of requirement files in /test_project/start.sh

Thanks for merging it!


Eat 6 bytes if Proxy4a GetListing

Fix for #1032

Thanks a lot.

Released
https://www.nuget.org/packages/FluentFTP/42.0.1


2982 - added phm don't know columns

Pre-review checklist
I have ensured that:

[ ] Code runs successfully in the development environment.
[ ] New code is tested to prove that it meets the specificaiton. If not, justify reasoning.
[ ] New code is documented using type hinting and following the numpydoc docstring format.
[ ] New code follows the project naming standards.

Overview of changes

I tried to merge all the changes from main before addressing Izzy's comment - I hope that worked!


Trash can dark mode fix

I am quite subpar when it comes to Git, so I hope this is all good 😀

Thank you!


Update config.json

Heya @tumblecloud! I think you pushed the wrong button in the github UI, I don't think you want to publish your blog through the hubpress.io repository. Can you close this pull request?

Closing off.


Update a document where the field is a stringified integer

The documentation says:

A document is an object that contains pairs that associate a string field to a value of any type.

source
Given this, I may do:
genji> create table foo;
genji> insert into foo values {"1": "one"};
genji> select * from foo;
{
  "1": "one"
}

But if I want to update the "1" field, I get an error:
genji> update foo set "1" = "un";
found 1, expected identifier at line 1, char 15
genji> update foo set 1 = "un";
found 1, expected identifier at line 1, char 16

Actually it's not an error, you just need to write the query differently:
update foo set `1` = "un";

After SET, the parser expects an identifier, which can be written in two ways.
You can take a look at this documentation to learn more about that: https://genji.dev/docs/genji-sql/lexical-structure/#identifiers

Indeed, closing the issue.


Add front matter to notebook tutorials

Adds license to each notebook (and AUTHORS file to match).
Adds buttons and some formatting.
Applies nbfmt in initial commit to normalize JSON. Please look at subsequent commits to see the content diffs.
Note: All notebooks have outputs saved so are not tested. Some of these currently fail in Colab

I'll fix the failing tests in another PR.

Thank you!


Feature proposal: Ability to view a diff of the currently open file compared to the file on disk

I sometimes make lots of edits when debugging etc, and notice that I need a diff before saving. I would like to avoid saving under a different name and then manually checking the diff.

Done in release v0.1.56


[NFC] Remove empty check for SingleExpression in Refactoring.cpp findConcatenatedExpressions

As the fixme states, this check seems to be unnecessary, local tests are ok without it, but not sure if maybe it was there for a reason...

@swift-ci Please nominate

@swift-ci Please test

Thanks for review @nkcsgexi @nathawes :)


Fix for slow tcp connect in non blocking mode

Hotfix for nonblocking, slow TCP connections not returning instantly. If the connect() takes too long, it will return WSAEALREADY, which when linked incorrectly, return WSAINVAL instead. This will destroy the connection.
Quote from: https://msdn.microsoft.com/en-us/library/windows/desktop/ms737625(v=vs.85).aspx

WSAEALREADY: A nonblocking connect call is in progress on the specified socket.
Note  In order to preserve backward compatibility, this error is reported as WSAEINVAL to Windows
Sockets 1.1 applications that link to either Winsock.dll or Wsock32.dll."

The attached patch converts any WSAINVAL to WSAEALREADY. This has the problem, that if you really have invalid arguments (call connect on a listening socket) it will not fatally fail anymore.

Can this be done without breaking the listening socket error case?
In other words, can we test whether it's a listening socket and only convert WSAINVAL to WSAEALREADY when it's not?
If we can't test for that, should we make note of it when socket_listen is called?


Use mock ingester to test tags

Integration test using the mock ingester to validate that tags are being sent.

I'll update the journald tests #87 to use the mock ingester.


Add user prompts

This is a sketch of the TicTacToe game interaction between the players and the computer

Added requested changes


Moved LogEntry-related tests to their own test case

Refs #21113.

I'll provide a diff with a few cleanups shortly.

http://dpaste.com/1CYVPQP

Are you sure about your diff content:
patch unexpectedly ends in middle of line
patch: **** malformed patch at line 135:

Hm, dpaste.com seems to cause issues. Please try https://dpaste.de/mcnc/raw

Thanks, I was able to apply that version.


Tools like PopClip do not work any more

Since #85 and the removal of menu-fix I cannot use PopClip any more. I suspect other tools relaying on an interactive overlay may be broken as well. kwm switches to the PopClip application and thereby losing the context to act on.

I really hate the layer system implemented in OSX..
Will see if something can be done about this in the future.

Thanks, because until there is a fix I need to unload kwm.

I have a fix working atm, that still allows for menubar/dock/context menus to work, but I'm not sure if it may break focusing of other window types.
Basically it has to do with:
 enum _CGCommonWindowLevelKey {
   kCGBaseWindowLevelKey         = 0,
   kCGMinimumWindowLevelKey      = 1,
   kCGDesktopWindowLevelKey      = 2,
   kCGBackstopMenuLevelKey       = 3,
   kCGNormalWindowLevelKey       = 4,
   kCGFloatingWindowLevelKey     = 5,
   kCGTornOffMenuWindowLevelKey  = 6,
   kCGDockWindowLevelKey         = 7,
   kCGMainMenuWindowLevelKey     = 8,
   kCGStatusWindowLevelKey       = 9,
   kCGModalPanelWindowLevelKey   = 10,
   kCGPopUpMenuWindowLevelKey    = 11,
   kCGDraggingWindowLevelKey     = 12,
   kCGScreenSaverWindowLevelKey  = 13,
   kCGMaximumWindowLevelKey      = 14,
   kCGOverlayWindowLevelKey      = 15,
   kCGHelpWindowLevelKey         = 16,
   kCGUtilityWindowLevelKey      = 17,
   kCGDesktopIconWindowLevelKey  = 18,
   kCGNumberOfWindowLevelKeys    = 19

Cool, thank you very much for the quick turnaround! It appears to work for me.


Update strapdown.js to support custom squirts and copyrights using the  and  tags in .

Fixes #10. Minified file needs to be updated.
My apologies if I've done something wrong, this is my first pull request on GitHub!

Oh, that's an interesting trick!
Can you please show a screenshot of how it looks on one of your page, with/without both  and  tags?
I'll try it myself, then merge your pull-request, and update the minified files.
I would also like to note that if HTML purists see your custom  and  tags, they won't be happy about them, but I don't care.

Oh, that's an interesting trick!
Can you please show a screenshot of how it looks on one of your page, with/without both  and  tags?
I'll try it myself, then merge your pull-request, and update the minified files.
I would also like to note that if HTML purists see your custom  and  tags, they won't be happy about them, but I don't care.

Thanks for taking a look!
Here's my page with <squirt> and <copyright>:

Here's my page without <squirt> and <copyright>:

I'm not sure, perhaps it would be better just to have one tag (<subtitle>, perhaps?) that allows complete customizability and covers the whole section, instead of being forced to used <squirt> and <copyright>.

Thanks for taking a look!
Here's my page with <squirt> and <copyright>:

Here's my page without <squirt> and <copyright>:

I'm not sure, perhaps it would be better just to have one tag (<subtitle>, perhaps?) that allows complete customizability and covers the whole section, instead of being forced to used <squirt> and <copyright>.

I like your approach, as it allows to customize the location and content of the copyright notice.
I would also like to add an option, that works like the others currently supported by StrapDown.js :
see this page for more details : https://naereen.github.io/StrapDown.js/example5.html
I'll do it myself, probably adding nosquirt=y and nocopyright=y. Except if you have a better suggestion?
(I'll wait for a reply before merging this PR and adding my idea of these two tiny options)

I like your approach, as it allows to customize the location and content of the copyright notice.
I would also like to add an option, that works like the others currently supported by StrapDown.js :
see this page for more details : https://naereen.github.io/StrapDown.js/example5.html
I'll do it myself, probably adding nosquirt=y and nocopyright=y. Except if you have a better suggestion?
(I'll wait for a reply before merging this PR and adding my idea of these two tiny options)

That sounds like a good idea! It's certainly cleaner than only being able to have empty <squirt> and <copyright> tags, which is the only way to remove the squirt and copyright in the system I set up.

That sounds like a good idea! It's certainly cleaner than only being able to have empty <squirt> and <copyright> tags, which is the only way to remove the squirt and copyright in the system I set up.


Default data (pre-form)

Hi, Do You have idea how add to first form more fields ?
Example i need add defaults for import :
default_user : select
file : Your button
after submit i want get this value

Hi, can you give me more information what do you want achieve?

@grekpg can you give me more informations?


Add deploy helper script

I added a little helper script to build and deploy the bootstrap zip ball and optional a custom channel tar ball.

Why bother building channel tarballs?

Because it is way faster and easier than commit to a temporary branch and push to github. And I like to develop on my laptop instead of my phone.

As I'm currently developing through ssh, my PR seems to be an overkill but feel free to reopen.


RuTracker not working

Hi,
Seems like the Rutracker module doesn't work anymore.
Haldi@Haldi-W10 /GITHUB/synox $ php syno.php bt rutracker "Test" "user" "pw" url:http://rutracker.org/forum/tracker.php?nm=Test PHP Warning:  Division by zero in /GITHUB/synox/src/bt-rutracker/SynoDLMSearchRutracker.php on line 289 count:0
The make command worked fine, and i can enter my password in Synology Downloadmanager and check that. But i never get search results.

Hi. From which country you are trying to access rutracker.org?

swiss.
If i use the webpage itself it works fine. I can login and search no problem.

Hi,
Do you have any news regarding this issue ?

Actually it's working for me.. Never mind my previous comment.

Version DSM 6?
I can't check the work of rutracker since it is blocked on the territory of Russia.
I'm currently working on an update the synox to be allocated in one module for download station and web interface at api.

Yes, DSM v6..
I didn't expect rutracker to be blocked in Russia since most of the content is in Russian.

Hi there, I have the same issue and I'm from Belarus. What I've noticed so far:

I've fixed the script temporary to avoid exception;
if I login to NAS over SSH and make request manually - I get the response (see response.txt attached);
if I change URLs to http://rutracker-org.appspot.com/ domain - there is no difference (saw this here http://www.synology-forum.ru/index.php?showtopic=2376&st=240&gopid=67158&#entry67158);

bt-rutracker.txt
respose.txt

As the login page, try to use this page http://rutracker-org.appspot.com/forum/login.php?redirect=tracker.php?nm=mors
since it is redirected to it in 302 Found

It will soon be updated where synox will act as a proxy for search plugins. This will expand and simplify the management of plugins operational update plugins themselves in the future.
Here is an example of how it will look.

For Download Station will be implemented only one plugin synox.

Thanks a lot, haven't had enough time to look into into, seems like I've already tried this URL as in my initial comment above. Anyway, looking forward getting from you that update with unified UI. It would be great to have any update of that event.

Hey dude) I managed to fix it, almost)
The URL you noticed is fine - the only problem I should log out first, there was a captcha so the script failed every time on it, after my "log out" "log in" works as expected. I started getting responses, but still no entries were found. I was going deeper and found that I missed trailing slash at the $pagePrefix constants, fixed it and got valid URLs in the bt-rutracker.log file, but still no entries found. Problem was $entry->getDownload() === 'unknown'. After looking through html-response I noticed that $node items consist unauthorized page. So I had no patience to go deeper and decided to parse entry URL where all necessary information already exists: http://rutracker.org/forum/viewtopic.php?sid=p7Ih3s&t=4244966 - last number is torrent download file ID. After some modification of $item-getDownload() method I got my entries. But! All above works only in SSH through direct request like: php syno.php bt rutracker "embers of a dying world" "my_user_name" "my_pass". I swapped ru-tracker sources with mine, built actual dlm file, installed it on my synology but there is no success: "No matches found" in the GUI.
Pal, I need you help, thank in advance.

I tried to make debug search from synology GUI and got very strange response: google-site-verification. It's clear why I get no entries, but what is the matter can be with this? From ssh all still works fine - 3 entries like from web-face of rutracker.

Synology begin to change due to the plugins algorithm DS. that's why I decided to make all of the plugins in a separate mechanism. The less depending on the hidden code Synology, the longer it will run the plugins and will be easier to restore this.
You can try Alpha-2 it is not stable version, but it is possible you will earn.
Issues or pull requests are welcome.

I finally got the repository to build under Windows 10 and Cygwin (with make and zip commands installed). When I add the *.dlm file it says "The search engine plug-in is invalid.". Any suggestions as to what I should try next? I was on the alpha-2 branch btw.

Try to rename the resulting *.dlm file in *.zip and open archiver. dlm is a normal zip file.


The "CheckFileSystemCaseSensitive" task failed unexpectedly, Could not load file or assembly 'System.IO.FileSystem

To my Visual Studio 2017, ASP.NET Core, MVC web project I just added the Microsoft.TypeScript.MSBuild NuGet package v2.3.1, and simultaneously updated my ASP.NET Core assemblies from 1.0.* to 1.1.1.  Now suddenly when I build my project I get the following exception:
Severity	Code	Description	Project	File	Line	Suppression State
Error	MSB4018	The "CheckFileSystemCaseSensitive" task failed unexpectedly.
System.IO.FileNotFoundException: Could not load file or assembly 'System.IO.FileSystem, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
File name: 'System.IO.FileSystem, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
   at TypeScript.Tasks.CheckFileSystemCaseSensitive.Execute()
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()

Double-clicking on the exception message takes one to these lines in the file Microsoft.TypeScript.targets:
<Target Name="CheckFileSystemCaseSensitive">
    <CheckFileSystemCaseSensitive
       MSBuildThisFileFullPath="$(MSBuildThisFileFullPath)" >
      <Output TaskParameter="IsFileSystemCaseSensitive"  PropertyName="IsFileSystemCaseSensitive" />
    </CheckFileSystemCaseSensitive>
</Target>

where it says that "MSBuildThisFileFullPath is not defined".
I've tried adding references to NETStandard.Library, as suggested here:  https://github.com/dotnet/corefx/issues/16206, but that doesn't make any difference.
The diagnostic MSBuild output looks like this:
1>Target "CheckFileSystemCaseSensitive" in file "C:\Users\dkent\.nuget\packages\microsoft.typescript.msbuild\2.3.1\tools\netstandard1.3\Microsoft.TypeScript.targets":
1>  Using "CheckFileSystemCaseSensitive" task from assembly "C:\Users\dkent\.nuget\packages\microsoft.typescript.msbuild\2.3.1\tools\netstandard1.3\TypeScript.Tasks.dll".
1>  Task "CheckFileSystemCaseSensitive"
1>    Task Parameter:MSBuildThisFileFullPath=C:\Users\dkent\.nuget\packages\microsoft.typescript.msbuild\2.3.1\tools\netstandard1.3\Microsoft.TypeScript.targets
1>    [...]\.nuget\packages\microsoft.typescript.msbuild\2.3.1\tools\netstandard1.3\Microsoft.TypeScript.targets(172,5): error MSB4018: The "CheckFileSystemCaseSensitive" task failed unexpectedly.
1>    [...]\.nuget\packages\microsoft.typescript.msbuild\2.3.1\tools\netstandard1.3\Microsoft.TypeScript.targets(172,5): error MSB4018: System.IO.FileNotFoundException: Could not load file or assembly 'System.IO.FileSystem, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
1>    [...]\.nuget\packages\microsoft.typescript.msbuild\2.3.1\tools\netstandard1.3\Microsoft.TypeScript.targets(172,5): error MSB4018: File name: 'System.IO.FileSystem, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
1>    [...]\.nuget\packages\microsoft.typescript.msbuild\2.3.1\tools\netstandard1.3\Microsoft.TypeScript.targets(172,5): error MSB4018:    at TypeScript.Tasks.CheckFileSystemCaseSensitive.Execute()
1>    [...]\.nuget\packages\microsoft.typescript.msbuild\2.3.1\tools\netstandard1.3\Microsoft.TypeScript.targets(172,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
1>    [...]\.nuget\packages\microsoft.typescript.msbuild\2.3.1\tools\netstandard1.3\Microsoft.TypeScript.targets(172,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()
1>  Done executing task "CheckFileSystemCaseSensitive" -- FAILED.

Is there at least a work-around for this?

More info:
If I delete the "obj" folder in the root of the project, then the build succeeds until I close and restart Visual Studio.  Rebuilding after restarting Visual Studio then again hits the error.  I can delete the obj folder and again the error disappears.
Rebuild Solution makes no difference, nor does closing and reopening either the project or the solution.

I hit this error too, and you workaround works for me (delete the obj folder), thank you!
I hope Microsoft will fixed it soon, quite annoying

This is a bug in the CheckFileSystemCaseSensitive task, which is distributed by TypeScript. Because it doesn't ship its dependency System.IO.FileSystem.dll, it only works if another task has loaded System.IO.FileSystem earlier in the build. On an incremental build, that's not happening (I suspect that the compiler task is what loads it when it works).
One possible workaround would be to define a property to disable incremental builds in your project. This will cause build times to increase (because the compiler will run all the time), but will force the compiler to run. If I'm right that the compiler is what's forcing the load, this should work around the problem.
You can try that by setting the property
<NonExistentFile>WorkaroundForTypescriptBuildTask</NonExistentFile>

in your project file.
This class of bug could be alleviated by #1542.

This issue was moved to Microsoft/TypeScript#15664


Nothing 2

Which issue this PR addresses:

Fixes
What this PR does / why we need it:

Test plan for issue:

Is there any documentation that needs to be updated for this PR?

Test was a success. Closing


Rewrite help page section.

Rewrite help page generation section, formerly documenting script.

Could you also rebase this on main?

Can do both.

Do you want all docs based on main or just this branch?

@AndreasBackx Done.

Do you want all docs based on main or just this branch?

All docs, let's focus on just main for now.

@AndreasBackx Done.

Thanks, this is much easier to review now.


pdm support

What would you like to be added:
pdm.lock compatibility to scan requirements.
Why is this needed:
pdm is pretty popular according to number of stars (~6K).

Thank you for the suggestion, @RichardDally, I presume you are talking about https://pdm-project.org/latest/ -- the Python package manager, but please correct me if I'm wrong.

Thank you for the suggestion, @RichardDally, I presume you are talking about https://pdm-project.org/latest/ -- the Python package manager, but please correct me if I'm wrong.

Yes 😊

Thanks! We'll put this in our backlog. Is this something you're interested in working on? We would be happy to help get you pointed in the right direction. Just let us know.
Dev note: an example pbm lock file: https://github.com/pdm-project/pdm/blob/main/pdm.lock


Run failed with STATUS_DLL_NOT_FOUND

I installed libmysql with vcpkg, and my application compiles, but it fails with message
error: process didn't exit successfully: `target\release\demo.exe` (exit code: 0xc0000135, STATUS_DLL_NOT_FOUND)

I can't figure out why, and I tried ldd it doesn't show libmysql.dll

please add the path of mysql dll to the system variable.

Closed as this is a setup error in the user environment.