Found 58 issues

First time here? ๐Ÿ‘‹

Welcome to Find a PR.

Find a PR is an open-source site that is built to help developers find projects so that they can submit their very first pull request.

If you're a contributor looking to find a project to contribute to, feel free to browse through the list below.

If you're a maintainer looking to list your project on Find a PR, you can read how to do this in the documentation.

good first issue hacktoberfest

It should be possible to configure Cachet via a cachet:install Artisan command.

v2.x had an interactive command that would ask you questions and store the configuration.

For v3.x, this won't work exactly the same as we now have a mix of .env and database settings, but the idea is the same.

View more
3 comments
jbrooksuk

jbrooksuk

9th Oct 2024 @ 20:21

Feature help wanted

Calling for help from Docker experts. We need to create the best possible docker-compose.yml file for this project. The application requirements are well defined (we use env vars, Webpack Encore, PHP 7.1, Symfony 4.1, SQLite database, etc.) so it should be possible to create that file.

View more
30 comments ๐Ÿ‘ 28
javiereguiluz

javiereguiluz

21st May 2018 @ 09:37

bug help wanted

What happened?

After installation, I noticed that in the browser console it outputs an error of wireEl is undefined.

How to reproduce the bug

Just install this package in a livewire project, preferable with Filament's admin package. And see the browser console.

composer create-project laravel/laravel test;
composer require filamentphp/filament;
composer require spatie/laravel-blade-comments;

Then go through the browser console and see the error

Package Version

1.0.1

PHP Version

8.2.0

Laravel Version

10.13.0

Which operating systems does with happen with?

macOS

Notes

Filament ......................................................
Packages ...... filament, forms, notifications, support, tables
Version .............................................. v2.17.44
Views ..................................... PUBLISHED: filament

View more
4 comments ๐Ÿ‘ 2
sawirricardo

sawirricardo

2nd Jun 2023 @ 07:15

enhancement help wanted

Discussed in https://github.com/spatie/schema-org/discussions/202

Originally posted by indyjonesnl January 10, 2024

$lodgingBusiness = Schema::lodgingBusiness()
  ->openingHours(
    Schema::openingHoursSpecification()
      ->dayOfWeek([Schema::dayOfWeek()::Monday])
      ->opens(new DateTime('09:00:00'))
      ->closes(new DateTime('17:00:00'))
  )
  ->checkinTime(new DateTime('14:00:00'))
  ->checkoutTime(new DateTime('11:00:00'))

This results in the current date + time being included in the output "opens":"2024-01-10T09:00:00+00:00","closes":"2024-01-10T17:00:00+00:00" and ..."checkinTime":"2024-01-10T14:00:00+00:00","checkoutTime":"2024-01-10T11:00:00+00:00"...

While the Schema should contain only the time, formatted as 14:30:00+08:00.

Can someone point me in the right direction?

View more
Gummibeer

Gummibeer

11th Jan 2024 @ 13:12

help wanted

When calling mb_convert_encoding() with $fromEncoding === 'HTML-ENTITIES', the polyfill does not return functionally equivalent strings to the native function. This is because mb_convert_encoding() uses html_entity_decode() when $fromEncoding === 'HTML-ENTITIES' and that function does not return characters for many numeric entities 0-31 and 127-159. For example:

<?php

require "vendor/symfony/polyfill-mbstring/Mbstring.php";

use Symfony\Polyfill\Mbstring as p;

for($i = 0; $i < 1024; $i++) {
	$string = "&#" . $i . ";";
	$mbstring = mb_convert_encoding($string, 'UTF-8', 'HTML-ENTITIES');
	$polyfill = p\Mbstring::mb_convert_encoding($string, 'UTF-8', 'HTML-ENTITIES');
	if($mbstring != $polyfill) {
		echo "Mismatch: $string - mbstring: $mbstring; polyfill: $polyfill\n";
	}
}

outputs:

Mismatch: &#0; - mbstring: ; polyfill: &#0;
Mismatch: &#1; - mbstring: ; polyfill: &#1;
Mismatch: &#2; - mbstring: ; polyfill: &#2;
Mismatch: &#3; - mbstring: ; polyfill: &#3;
Mismatch: &#4; - mbstring: ; polyfill: &#4;
Mismatch: &#5; - mbstring: ; polyfill: &#5;
Mismatch: &#6; - mbstring: ; polyfill: &#6;
Mismatch: &#7; - mbstring: ; polyfill: &#7;
Mismatch: &#8; - mbstring:; polyfill: &#8;
Mismatch: &#11; - mbstring:
                            ; polyfill: &#11;
Mismatch: &#12; - mbstring:
                            ; polyfill: &#12;
Mismatch: &#14; - mbstring: ; polyfill: &#14;
Mismatch: &#15; - mbstring: ; polyfill: &#15;
Mismatch: &#16; - mbstring: ; polyfill: &#16;
Mismatch: &#17; - mbstring: ; polyfill: &#17;
Mismatch: &#18; - mbstring: ; polyfill: &#18;
Mismatch: &#19; - mbstring: ; polyfill: &#19;
Mismatch: &#20; - mbstring: ; polyfill: &#20;
Mismatch: &#21; - mbstring: ; polyfill: &#21;
Mismatch: &#22; - mbstring: ; polyfill: &#22;
Mismatch: &#23; - mbstring: ; polyfill: &#23;
Mismatch: &#24; - mbstring: ; polyfill: &#24;
Mismatch: &#25; - mbstring: ; polyfill: &#25;
Mismatch: &#26; - mbstring: ; polyfill: &#26;
Mismatch: &#27; - mbstring:  polyfill: &#27;
Mismatch: &#28; - mbstring: ; polyfill: &#28;
Mismatch: &#29; - mbstring: ; polyfill: &#29;
Mismatch: &#30; - mbstring: ; polyfill: &#30;
Mismatch: &#31; - mbstring: ; polyfill: &#31;
Mismatch: &#39; - mbstring: '; polyfill: &#39;
Mismatch: &#127; - mbstring: ; polyfill: &#127;
Mismatch: &#128; - mbstring: ย€; polyfill: &#128;
Mismatch: &#129; - mbstring: ย; polyfill: &#129;
Mismatch: &#130; - mbstring: ย‚; polyfill: &#130;
Mismatch: &#131; - mbstring: ยƒ; polyfill: &#131;
Mismatch: &#132; - mbstring: ย„; polyfill: &#132;
Mismatch: &#133; - mbstring: ย…; polyfill: &#133;
Mismatch: &#134; - mbstring: ย†; polyfill: &#134;
Mismatch: &#135; - mbstring: ย‡; polyfill: &#135;
Mismatch: &#136; - mbstring: ยˆ; polyfill: &#136;
Mismatch: &#137; - mbstring: ย‰; polyfill: &#137;
Mismatch: &#138; - mbstring: ยŠ; polyfill: &#138;
Mismatch: &#139; - mbstring: ย‹; polyfill: &#139;
Mismatch: &#140; - mbstring: ยŒ; polyfill: &#140;
Mismatch: &#141; - mbstring: ย; polyfill: &#141;
Mismatch: &#142; - mbstring: ยŽ; polyfill: &#142;
Mismatch: &#143; - mbstring: ย; polyfill: &#143;
Mismatch: &#144; - mbstring: ย; polyfill: &#144;
Mismatch: &#145; - mbstring: ย‘; polyfill: &#145;
Mismatch: &#146; - mbstring: ย’; polyfill: &#146;
Mismatch: &#147; - mbstring: ย“; polyfill: &#147;
Mismatch: &#148; - mbstring: ย”; polyfill: &#148;
Mismatch: &#149; - mbstring: ย•; polyfill: &#149;
Mismatch: &#150; - mbstring: ย–; polyfill: &#150;
Mismatch: &#151; - mbstring: ย—; polyfill: &#151;
Mismatch: &#152; - mbstring: ย˜; polyfill: &#152;
Mismatch: &#153; - mbstring: ย™; polyfill: &#153;
Mismatch: &#154; - mbstring: ยš; polyfill: &#154;
Mismatch: &#155; - mbstring: ย›; polyfill: &#155;
Mismatch: &#156; - mbstring: ยœ; polyfill: &#156;
Mismatch: &#157; - mbstring: ย; polyfill: &#157;
Mismatch: &#158; - mbstring: ยž; polyfill: &#158;
Mismatch: &#159; - mbstring: ยŸ; polyfill: &#159;

While many of these are control characters (and the native function does return them), the single quote (dec 39) is particularly problematic.

View more
1 comment
cpeel

cpeel

18th Mar 2021 @ 04:11

enhancement help wanted

Figure our a way to show a grayed out Laravel logo as a default avatar instead of the current default GitHub one.

View more
13 comments
driesvints

driesvints

29th Sep 2021 @ 10:48

enhancement help wanted

Hi! If I use this package with my project I has a problem. My package.json has a "git dependency" like this:

{
  "peerDependencies": {
    "package": "git+ssh://git@bitbucket.org/team/project.git"
  }
}

And npm-install-peers breaks.

View more
๐Ÿ‘ 5
JWo1F

JWo1F

18th Dec 2017 @ 08:52

help wanted ui long-standing

We welcome contributions adding additional languages to Vanguard.

The danish language has full coverage, from what I've seen, so please copy that file and translate into your intended language and open a PR.

Any language corrections should also be via PR.

I recommend reading this section of the docs for how Vanguard handles internationalization.

Thank you!

View more
lewislarsen

lewislarsen

26th Jul 2024 @ 21:34

enhancement help wanted hacktoberfest

Describe the bug I have a table which has an order column. When I reorder the elements I update each model with the new order. Because the table has some large JSON columns I select only id and order columns for efficiency. I set the new order and save the model.

foreach (Faq::query()->get(['id', 'order']) as $faq) {
    $faq->order = $newOrder[$faq->id];
    $faq->save();
}

The diffs created in the activity_log table look like this:

{
   "old": {
      "order": 1,
      "answer": null,
      "question": null
   },
   "attributes": {
      "order": 2,
      "answer": "long JSON content",
      "question": "long JSON content"
   }
}

From what I see laravel-activitylog fetches the model with all columns from the database before creating a log entry which kind of defeats the purpose of my "select list optimization" and produces an incorrect diff.

Generally I want these large JSON columns to be logged in case a user changes them but in this case I only change the order column so I would like to see only the order column in the diff.

I have tried running these updates straight off the Eloquent builder:

Faq::query()->where('id', $id)->update(['order' => $newOrder[$id]]);

but in this case nothing is logged.

I have the following activitylog configuration for my models:

public function getActivitylogOptions(): LogOptions
{
    return LogOptions::defaults()
                     ->logAll()
                     ->logOnlyDirty()
                     ->logExcept([
                         'id',
                         'created_at',
                         'updated_at',
                     ]);
}

To Reproduce Select a subset of columns from the database, change these columns, save the model and see that other (not initially selected) columns are present in the diff.

Expected behavior Only columns that've actually been changed should be present in the diff.

Versions

  • PHP: 8.1
  • Database: MySQL 8
  • Laravel: 9.31.0
  • Package: 4.6.0
View more
5 comments
KKSzymanowski

KKSzymanowski

28th Sep 2022 @ 21:53

enhancement help wanted

Let's try out Filament and move our own admin panels to it. This should provide us with a much more powerful admin backend.

https://filamentphp.com

View more
10 comments ๐Ÿ‘ 1
driesvints

driesvints

22nd Dec 2023 @ 09:06

good first issue hacktoberfest

It should be possible to:

  • Invite additional people to manage your status page.
  • Support roles (admin / user)
View more
jbrooksuk

jbrooksuk

3rd Oct 2024 @ 18:41

enhancement help wanted

Donate ๐Ÿ’ฐ to fund this issue

  • You can donate funding to this issue. We receive the money once the issue is completed & confirmed by you.
  • 100% of the funding will be distributed between the Filament core team to run all aspects of the project.
  • Thank you in advance for helping us make maintenance sustainable!
View more
danharrin

danharrin

17th Nov 2024 @ 18:27

enhancement help wanted good first issue

Describe the bug logUnguarded() works provided that $guarded is set explicitly in the model. If it is not set explicitly but globally set, say in AppServiceProvider using Model::unguard(); then nothing is logged.

To Reproduce

  1. remove $fillable and $guarded from a model that use uses LogsActivity
  2. call Model::unguard(); in AppServiceProvider in the boot method
  3. set
    public function getActivitylogOptions() : LogOptions
    {
        return LogOptions::defaults()->logUnguarded();
    }
  1. Make some changes to a model and save them

Expected behavior Some changed properties should be logged but none are

Versions (please complete the following information)

  • PHP: 8.1
  • Database: MySql
  • Laravel: 9.38
  • Package: larvel-activitylog
View more
1 comment
colinmackinlay

colinmackinlay

20th Nov 2022 @ 12:31

enhancement help wanted
  • standard tags
  • input fields
  • components
  • patterns

Add code snippets for each block

View more
๐Ÿ‘ 1
willemvb

willemvb

25th Jul 2016 @ 12:49

help wanted question

AST, or "abstract syntax tree", creates the expectation of a nested tree structure. In the case of a query string, the AST will only ever be one level deep; as multi nodes are combined into one.

If anyone wants to suggest a better, more clear name: you're welcome.

View more
3 comments
brendt

brendt

20th Dec 2018 @ 13:41

help wanted

I would be good to support normalizer_get_raw_decomposition function that appeared in PHP 7.3. I've tried to implement it but seems that existing decomposition data is already optimized to get the final decomposition. Example test case is available here. Pinging @nicolas-grekas as he is the author of Normalizer polyfill.

View more
4 comments
IonBazan

IonBazan

12th May 2018 @ 23:26

docs good first issue help wanted LiveComponent
View more
kbond

kbond

10th Nov 2024 @ 19:44

help wanted

Laravel Version

11.30.0

PHP Version

8.3.13 64bit TS

Database Driver & Version

No response

Description

When logging with single-quoted ' strings that containing escape characters like \r and [ ], they are being interpreted in the log output. This results in unexpected behavior, such as \r being converted to a carriage return, even though single-quoted strings in PHP treat backslashes as literal characters.

Using Illuminate\Support\Facades\Log With default logging configuration.

Steps To Reproduce

1- Download and create a Laravel 11 application project. (https://laravel.com/docs/11.x)

2- In any route, controller, or model file, log a string using single-quotes with a backslash \r and bracket [ ]. Example: Log::info('[MyNamespace\routes\non-web\application]');

3- Check the Laravel log file.

Expected output

local.INFO: [MyNamespace\routes\non-web\application]

Actual output

local.INFO: [MyNamespace outes on-web\application]

View more
2 comments
Yousha

Yousha

12th Nov 2024 @ 15:49

help wanted

Octane Version

2.5.9

Laravel Version

11

PHP Version

8.3

What server type are you using?

Swoole

Server Version

8.3

Database Driver & Version

No response

Description

Wildcard paths like config/**/*.php in the watch array of config/octane.php aren't working properly.

Steps To Reproduce

  1. Install chokidar
  2. Run octane:start --watch (I'm using Swoole)
  3. Modify a file in the config directory. Octane won't restart
  4. Change config/**/*.php to config in the watch array of config/octane.php
  5. Restart Octane server
  6. Modify a file in the config directory. Octane will now correctly restart

Same problem with anything else using wildcards eg. database (try modifying a seeder to test).

View more
4 comments
binaryfire

binaryfire

14th Nov 2024 @ 11:57

good first issue hacktoberfest

A practical extension for Planned Maintenances / Schedules would be the automatic time-controlled determination of the status.

condition status
now < scheduled_at Upcoming
now > scheduled_at and now < completed_at In Progress
now > completed_at Complete

This would be useful to announce maintenance carried out by third parties, where you only get information about the planned start and end.

I tried to hack this feature together, but I'm not versed enough with Laravel to implement this properly.

View more
5 comments
swoga

swoga

12th Oct 2024 @ 20:52

help wanted

Add in PHP 7.3 as Normalizer::normalize() argument for NFKC_Casefold normalization.

View more
1 comment
nicolas-grekas

nicolas-grekas

7th Feb 2019 @ 10:11

help wanted findapr

Description: I am using Flasher 2.0.1 in my Laravel 11 project and would like to know how to properly use the Flasher library in JavaScript. Additionally, I want to ensure that the JavaScript configuration is consistent with the settings defined in the flasher.php configuration file.

Details: Flasher Version: 2.0.1 Laravel Version: 11 Problem: Need guidance on using the Flasher library with JavaScript in a way that mirrors the configuration set in flasher.php.

View more
raseldev99

raseldev99

16th Sep 2024 @ 04:50

help wanted

Octane Version

2.6.2

Laravel Version

11.16.0

PHP Version

8.3.6

What server type are you using?

Swoole

Server Version

5.1.2

Database Driver & Version

No response

Description

Before i start, this is not a duplicate to https://github.com/laravel/octane/issues/903, this is about Swoole. Also large stream responses are fixed with https://github.com/laravel/octane/issues/636, but not this case.

While using Storage::download or Storage::response, laravel is creating a stream response that uses php fpassthru($stream). Somehow the buffering between fpassthru and ob_start does not work, instead it tries to load the full file into the memory. This leads to out of memory errors while downloading very big files.

If i replace the fpassthru with a fread-while-loop it is working as expected.

I can basically make a pull request, but need help with the solution... Is this more a problem in the laravel framework or PHP itself?

Steps To Reproduce

  1. Write a laravel controller that uses Storage::download() to download file with e.g. 1 GB
  2. Call the controller and see the out of memory error
View more
4 comments
NiroDeveloper

NiroDeveloper

24th Jul 2024 @ 11:18

enhancement help wanted hacktoberfest

Found the \Illuminate\Database\Eloquent\Concerns\HasAttributes::originalIsEquivalent() method during code diving and it should be usable for our trait! ๐ŸŽ‰ This PR would be mainly reasearch when that method was added, if it's compatible with our version support rules and switching our own change detection logic with the core one.

View more
3 comments
Gummibeer

Gummibeer

20th Oct 2021 @ 10:03

help wanted

Hello,

I noticed that there is an incompatibility with the mbstring polyfill and PHP 8.1 / Alpine Linux, which breaks a lot of my projects as soon as the php81-mbstring is not installed, but php81-iconv is installed:

Example:

Warning: iconv(): Wrong encoding, conversion from "ASCII" to "UTF-8//IGNORE" is not allowed in phar:///var/www/localhost/htdocs/phpstan.phar/vendor/symfony/polyfill-mbstring/Mbstring.php on line 736

It looks like //IGNORE is not accepted since echo iconv('UTF-8', 'UTF-8', 'test'); works, while echo iconv('UTF-8', 'UTF-8//IGNORE', 'test'); doesn't

View more
2 comments ๐Ÿ‘ 1
danielmarschall

danielmarschall

7th Jan 2022 @ 00:12

good first issue hacktoberfest

The dashboard should offer the ability to toggle the theme between:

  • Automatic (System)
  • Light
  • Dark

Further, the dashboard should have a "Theme" option to force a theme mode.

View more
2 comments
jbrooksuk

jbrooksuk

3rd Oct 2024 @ 18:34

help wanted

NotOrm Package

The goal is to make abstract code based on the package notorm to build a new orm system

View more
ambroisehdn

ambroisehdn

15th Jun 2022 @ 12:34

help wanted

Hi,

With the polyfill, var_dump(mb_strlen(chr(254))) return 0. With the php8.0-mbstring extension, var_dump(mb_strlen(chr(254))) return 1;

versions : * v1.26.0

Thanks, Alex

View more
7 comments
alexchuin

alexchuin

18th Oct 2022 @ 12:51

help wanted

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

  • I have read and understood the contributors guide.
  • I have checked the pull requests tab for existing solutions/implementations to my issue/suggestion.
  • I have checked that the bug-fix I am reporting can be replicated.

Description of the problem

One of the important reasons for using hyperscript is that it handles escaping of characters which are reserved in html. Which prevents XSS.

spatie/html-element does not do this. Mainly because it uses strings as intermediate format instead of an object representation of the DOM.

View more
6 comments ๐Ÿ‘ 3
Erikvv

Erikvv

1st Feb 2018 @ 02:19

good first issue hacktoberfest

Incidents can be marked as โ€œStickyโ€ which I think actually makes more sense to just be labelled as โ€œPin to topโ€. Logic needs implementing for this.

  1. Update language string from "Sticky" to "Pin to Top".
  2. Any "Sticky" incidents should be at the top of the timeline.
View more
4 comments
jbrooksuk

jbrooksuk

3rd Oct 2024 @ 18:30

help wanted

Octane Version

2.3.4

Laravel Version

10.46.0

PHP Version

8.2.20

What server type are you using?

Swoole

Server Version

5.1.1

Database Driver & Version

No response

Description

When the server runs out of memory, swoole is restarted after a restart of the server. Swoole thinks that the process should still be active because the PID is still in the octane-server-state.json, but this process ID doesn't exist anymore. Then in line 22-24 of src/Swoole/SwooleExtension.php it tries to kill a PID which doesn't exist anymore, receives a Operation not permitted[1] error and crashes the process, which is not started anymore.

Steps To Reproduce

  1. Create a laravel octane instance.
  2. Start up the server
  3. Trigger an OOM error on the server
  4. Try to restart the octane instance
View more
4 comments
Pluuk

Pluuk

1st Jul 2024 @ 07:31

enhancement help wanted

For some reason, our test suite is super slow. We should look into this and try to decrease memory usage and speed it up.

Parallel run:

  Tests:    316 passed (785 assertions)
  Duration: 13.64s
  Parallel: 10 processes

Regular run:

  Tests:    316 passed (785 assertions)
  Duration: 96.30s
View more
4 comments
driesvints

driesvints

29th Dec 2023 @ 10:43

good first issue hacktoberfest

Couple of improvements to the incident view page.

  • When viewing a single incident at /incidents/{incident} the page doesn't need the "About" section.
  • If an incident is linked to any components, we should display them here.
View more
12 comments
jbrooksuk

jbrooksuk

3rd Oct 2024 @ 18:36

help wanted

Currently, for plural rules, the MessageFormatter polyfills uses the English rules for all locales (it ignores the locale). To be consistent with what we do in symfony/intl (used by symfony/polyfill-intl-icu to implement NumberFormatter and DateFormatter), we should rather fail explicitly here (using the English rules for a different locale would not give the right result anyway)

View more
2 comments
stof

stof

23rd Oct 2018 @ 15:34

help wanted

Laravel Version

11.26.0

PHP Version

8.2.24 (irrelevant)

Database Driver & Version

SQLite 3.37.2 (irrelevant)

Description

When scheduling events in App\Console\Kernel::schedule(), and having an event not overlap itself for M minutes, if the event takes too long and is overlapped but completes first, it releases the mutex that is owned by the newer event, allowing the newer event to be overlapped immediately regardless of M.

Steps To Reproduce

  1. Schedule a command (Event-X)
  2. Have the command not overlap itself for M minutes; it holds a mutex for M minutes.
  3. Command takes longer than M minutes to complete, mutex expires.
  4. Command is re-run (Event-Y), overlapping Event-X (this is fine), and Event-Y now has the mutex.
  5. Event-X completes, and CacheEventMutex::forget() force-releases Event-Y's mutex, which may still be running (this is not fine).
  6. Event-Z can now immediately overlap Event-Y, regardless of M

Solution:

  1. CacheEventMutex::create() must provide an $owner to the lock, or retrieve the owner after creation. This prevents a random identifier from being used during lock creation and then immediately lost. Where this value lives can be discussed. It only needs to exist in the current runtime.
  2. CacheEventMutex::forget() must not force-release if an owner is already known from create(). This allows ScheduleClearCacheCommand to still force-release by not giving one.
  3. ScheduleFinishCommand should accept an owner identifier to ensure that the owners are the same when attempting mutex release for background jobs. The owner, as determined in the same runtime, should be given by CommandBuilder::buildBackgroundCommand().
  4. Failure to release upon job completion may be silent; the event is done, and overlap was allowed, no exception is necessary when another process holds the mutex.
View more
2 comments
yoosefi

yoosefi

29th Oct 2024 @ 23:38

help wanted

Octane Version

2.5.6

Laravel Version

10.48.22

PHP Version

8.1.29

What server type are you using?

Swoole

Server Version

5.1.4

Database Driver & Version

No response

Description

I noticed that octane+swoole consumes much more memory than standard artisan serve. For example I'm testing file uploads (using raw POST request) with files of different sizes. Results:

File size             | Laravel | Octane |
----------------------------------------------------------------
10 B                  |   8 MB  |  23 MB |
20 MB                 |  22 MB  |  64 MB |
50 MB                 |  53 MB  | 125 MB |

So, looks like with swoole the file is copied twice in memory.

Steps To Reproduce

Create a POST route that does nothing but logs/returns memory_get_peak_usage() and run curl -k --data-binary "@file" -H "Expect:" -H "Content-Type: text/plain" https://host/path/to/route. Make the file "./file" of appropriate size.

Swoole configuration from config/octane.php:

  'swoole' => [
        'options' => [
            'log_file' => storage_path('logs/swoole_http.log'),
            'package_max_length' => env('SWOOLE_PACKAGE_MAX_LENGTH', 50 * 1024 * 1024),
            'enable_coroutine' => false,
            'send_yield' => true,
            'socket_buffer_size' => 10 * 1024 * 1024,
        ],
    ],
View more
6 comments
alecpl

alecpl

27th Sep 2024 @ 10:28

documentation good first issue

The docs aren't finished. This issue exists to track the missing pieces:

  • App icons
  • Dock
  • Printing
  • ProgressBar
  • Queue
  • Screens
  • Settings
  • Shell
  • System
  • Touch ID
  • How to customise Electron / PR to NativePHP
  • Security disclosures process
  • Highlight current section
  • Show ToC persistently on the right-hand side
  • Sponsorship page
  • Contributors page
  • Show sponsors in sidebar
  • Add next/previous section buttons to the bottom of pages
  • Add Edit on GitHub link to pages
View more
7 comments
simonhamp

simonhamp

8th Sep 2024 @ 15:01

docs help wanted Turbo

We're missing docs this these features.

View more
๐Ÿ‘ 3
kbond

kbond

31st Oct 2024 @ 18:02

good first issue hacktoberfest

Cachet 2.x can store custom meta data to be passed to incidents. We can extend this in 3.x to support custom meta on most, if not all models.

  • Create Meta model.
  • Add Meta relationship to models.
  • Update actions and API to support passing meta.
  • Add meta to the Http resources.
View more
jbrooksuk

jbrooksuk

14th Sep 2023 @ 18:51

help wanted

Octane Version

v2.3.10

Laravel Version

v11.6.0

PHP Version

v8.3.6

What server type are you using?

FrankenPHP

Server Version

v1.1.4 PHP 8.3.6 Caddy v2.7.6

Database Driver & Version

Postgress

Description

Last week we updated our app previously using php-fpm running on Forge to use Laravel Octane with FrankenPHP. Our site is mostly an API that handles analytics events (Like google analytics). It uses the default Laravel api throttling.

In staging our app worked fine (30 req/sec same IP), but when deploying to production (1400 req/sec, different IPs) it started to fail, giving a lot of 429 Too Many Requests.

image

I quickly rolled back to php-fpm and after a few hours tried again with the same problem. Rolled back and the next day I switched to Swoole and it worked perfectly without changing a single line of code nor having to redeploy anything. So I can confidently say that is NOT a bug in my code, but rather a bug with FrankenPHP or the Octane integration with FrankenPHP.

My theory is that the RateLimiter is not reseting between requests so it's shared between different users. So multiple different users trigger the rate limiter:

This is my Rate limiter configuration:

// AppServiceProvider

RateLimiter::for('api', function (Request $request) {
    return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip());
});

our production CACHE_STORE is redis. Throttling worked perfectly fine without octane and with octane but using Swoole. It failed with hundred of 429 Too Many Requests after installing FrankenPHP.

This is our bootstrap/app.php:

<?php

use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
use Illuminate\Support\Facades\App;

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
        then: function () {
            Route::middleware('api')
                ->prefix('api')
                ->as('api.')
                ->domain(config('app.domain'))
                ->group(base_path('routes/api.php'));

            Route::middleware('web')
                ->domain(config('app.domain'))
                ->group(base_path('routes/web.php'));

            Route::middleware('web')
                ->domain(config('playsaurus.ads.domain'))
                ->group(base_path('routes/ads.php'));
        }
    )
    ->withMiddleware(function (Middleware $middleware) {
        $middleware->throttleApi();

        $middleware->redirectTo(
            guests: '/login',
            users: '/',
        );

        $middleware->web(append: [
            \App\Http\Middleware\HandleInertiaRequests::class,
            \Illuminate\Http\Middleware\AddLinkHeadersForPreloadedAssets::class,
        ]);

        $middleware->api(append: [
            \App\Http\Middleware\ConfigureLocale::class,
        ]);

        $middleware->alias([
            'localize' => \App\Http\Middleware\ConfigureLocale::class,
            'embed' => \App\Http\Middleware\AllowsEmbeding::class,
        ]);
    })
    ->withExceptions(function (Exceptions $exceptions) {
        $exceptions->dontReport([
            \App\Services\Announcements\InvalidVariantKey::class,
            \App\Exceptions\CouponRedeemException::class,
        ]);
    })->create();

Steps To Reproduce

It's difficult to reproduce. Because I can't test it in production because that would mean a lot of downtime for our users.

My theory is that it would be possible to reproduce from multiple different IPs. But since I don't have the means to test it, I don't know.

View more
9 comments ๐Ÿ‘ 1
jhm-ciberman

jhm-ciberman

14th May 2024 @ 00:15

good first issue help wanted

We need to implement the metric charts into the status page.

View more
8 comments
jbrooksuk

jbrooksuk

5th Mar 2024 @ 16:00

good first issue hacktoberfest

We need to bring back support for tags.

  • In 2.x only components support being tagged, but we could extend this to other areas including; incidents, metrics and schedules.
  • The API needs to support filtering the endpoint by a tag.
View more
jbrooksuk

jbrooksuk

13th Sep 2023 @ 20:45

help wanted

When using the addToMediaFromURL method, I'm receiving a Could Not Load Image error on the server, but not locally (I'm using Laravel Vapor) and not with other image formats.

The code below is where the error is occuring and that code is receiving an absolute file path to the image in s3, which is available.

public function addToMediaLibrary($file_path) { $media = $this->addMediaFromUrl($file_path) ->toMediaCollection("", 's3'); return $media; }

As an example the file path when logged out is https://s3.sitesforsaas.com/tenants/d221c93a-3757-466c-bf83-b74a9ee64c04/sites/9cfc24c7-cb2a-4c5a-8c0f-73ecdc79c166/2024/09/4e9854b0-4f2d-4931-a726-01f557bd7fc6.webp, but the error is looking for the image in local 'tmp' storage for some reason.

Could not load image at path /tmp/storage/tenantd221c93a-3757-466c-bf83-b74a9ee64c04/media-library/temp/j7pNMerUdReNx9MfAG5rKjcmGHWu4i99/LM2UYMTcYU0BO8sLsTfeOBpS9eXximejlarge.webp`",

View more
2 comments ๐Ÿ‘ 3
josiahmann

josiahmann

11th Sep 2024 @ 21:32

help wanted

When encountering nested tokens, they are parsed only during formatting, not when compiling the pattern. And the type of tokens are validated only during the rendering as well. But the native implementation detects such error during the instantiation: https://3v4l.org/Sf69D This means that the error handling required for the polyfill is not the same than for the native implementation.

View more
stof

stof

23rd Oct 2018 @ 15:58

good first issue hacktoberfest

The themes dashboard needs finishing and actually needs implementing into the status page. Changing a color doesnโ€™t do anything currently.

View more
jbrooksuk

jbrooksuk

3rd Oct 2024 @ 18:42

good first issue

At the moment, if you have a job and you specified the number of times it should be retried, you could test it like this:

test('job')
    ->expect('App\Jobs\TestJob')
    ->toBeTriedAgainOnFailure()

However, that merely checks that a $tries property exists on the class and that the value is above 1. I think it would be better if you could specify that number yourself:

test('job')
    ->expect('App\Jobs\TestJob')
    ->toBeTriedAgainOnFailure(maxTries: 5)

If you have a set number that each job should be retried across the application, then this test will help catch where someone has tried to increase it.

There's definitely some other expectations that this can be applied to and I think it will greatly enhance Lawman

View more
JonPurvis

JonPurvis

16th Sep 2024 @ 02:18

good first issue hacktoberfest

We need to bring back the various notifications sent by Cachet.

  • Components
    • ComponentStatusChanged
  • Incidents
    • NewIncident
  • Incident Updates
    • IncidentUpdated (this could be moved into the Incidents namespace above.
  • Schedule
    • NewSchedule
  • Subscriber
    • VerifySubscription
  • System
    • Test
View more
2 comments
jbrooksuk

jbrooksuk

13th Sep 2023 @ 18:59

enhancement help wanted ui logic long-standing

Contact Details

No response

Feature Title

Add More Notification Support

Feature Description

More Notification options, such as.. Telegram, Pushover, potentially SMS?

For Telegram, users will be able to create a Telegram focused Notification Stream, allowing for backup task notifications to be sent via Telegram bot. Will need a page to link their account.

Vanguard Version

v1.4.1

Current Issues

No response

Additional Context

No response

Resources

No response

View more
2 comments
lewislarsen

lewislarsen

26th Jul 2024 @ 21:22

help wanted good first issue

This code returns an error

QueueSizeCheck::new() ->queue('static_cache', 100),
QueueSizeCheck::new()->queue('default', 100),

Spatie\Health\Exceptions\DuplicateCheckNamesFound You registered checks with a non-unique name: QueueSize. Each check should be unique. If you really want to use the same check class twice, make sure to call name() on them to ensure that they all have unique names.

The current solution is to manually give it a name for each check:

QueueSizeCheck::new() ->queue('static_cache', 100)->name('Queue size (static_cache)'),
QueueSizeCheck::new()->queue('default', 100)->name('Queue size (default)'),

A nice PR would be to put a default name based on queue name

View more
SRWieZ

SRWieZ

8th Aug 2024 @ 19:58

good first issue

Many of them are out of date, some by a few major versions!

It would be great to get these into good order and start keeping them up to date

View more
simonhamp

simonhamp

24th Oct 2024 @ 11:53

bug enhancement good first issue

What happened?

I just installed package and complement for AI powered solution. When I create an issue to test it I get :

Capture d'รฉcran 2024-07-21 125216

I had to change the links function like this to make it work for me:

public function links(): array
{
    $rawText = Str::finish($this->rawText, 'ENDLINKS');

    $textLinks = $this->between('LINKS', 'ENDLINKS', $rawText);

    $textLinks = explode(PHP_EOL, $textLinks);

    $links = [];

    foreach ($textLinks as $textLink) {
        $textLink = str_replace('\\', '\\\\', $textLink);
        $textLink = str_replace('\\\\\\', '\\\\', $textLink);

        $decodedLink = json_decode($textLink, true);

        if ($decodedLink !== null) {
            $links[$decodedLink['title']] = $decodedLink['url'];
        }
    }

    return $links;
}

How to reproduce the bug

When I install the package in my project and use it with AI powered

Package Version

1.0

PHP Version

8.2.14

Laravel Version

11.14

Which operating systems does with happen with?

Windows

Notes

No response

View more
2 comments
bestmomo

bestmomo

21st Jul 2024 @ 10:57

bug help wanted

When attempting to filter tests by test or file name pressing the "Enter" key has no effect.

Pressing "Enter" at the default screen correctly triggers a "test run" where all tests are run.

View more
4 comments
ntwb

ntwb

25th Feb 2018 @ 10:49

bug unconfirmed help wanted medium priority

Package

filament/filament

Package Version

v3.2.124

Laravel Version

v11.x

Livewire Version

v3.x

PHP Version

8.3.x

Problem description

getting an error when importing large file names or Arabic file name ex:

SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'file_path' at row 1 (Connection: mysql, SQL: insert into `imports` (`user_id`, `file_name`, `file_path`, `importer`, `total_rows`, `updated_at`, `created_at`) values (209, ุนู…ู„ุงุก ุดู‡ุฑ ูŠู†ุงูŠุฑ 2024 ุงู„ุจุฏุฑ ู„ู„ู…ุจูŠุนุงุช ุงูˆู† ู„ุงูŠู† ูˆุงูˆู ู„ุงูŠู† .csv, /code/storage/app/livewire-tmp/97dKPqjXMEhVTL3x1swh3I6hfqyYKK-meta2LnZhdmE2KfYoSDYtNmH2LEg2YrZhtin2YrYsSAyMDI0INin2YTYqNiv2LEg2YTZhNmF2KjZiti52KfYqiDYp9mI2YYg2YTYp9mK2YYg2YjYp9mI2YEg2YTYp9mK2YYgLmNzdg==-.csv, App\Filament\Imports\ContactImporter, 53, 2024-11-17 08:09:15, 2024-11-17 08:09:15))

Expected behavior

imported succssfully.

Steps to reproduce

just import file named ุนู…ู„ุงุก ุดู‡ุฑ ูŠู†ุงูŠุฑ 2024 ุงู„ุจุฏุฑ ู„ู„ู…ุจูŠุนุงุช ุงูˆู† ู„ุงูŠู† ูˆุงูˆู ู„ุงูŠู† .csv

Reproduction repository (issue will be closed if this is not valid)

https://github.com/AQuadic/NO-REPO-NEEDED

Relevant log output

Sorry for not including repo, but it can be reproduced on any repo and on demo. just file name like I said.

Donate ๐Ÿ’ฐ to fund this issue

  • You can donate funding to this issue. We receive the money once the issue is completed & confirmed by you.
  • 100% of the funding will be distributed between the Filament core team to run all aspects of the project.
  • Thank you in advance for helping us make maintenance sustainable!
View more
Saifallak

Saifallak

17th Nov 2024 @ 12:17

good first issue hacktoberfest

I think a "Manage Localization" settings page would be more useful for language settings or something else like display timezone...

View more
jbrooksuk

jbrooksuk

30th Oct 2024 @ 16:37

help wanted hacktoberfest good first issue documentation

We are logging activity of several models, some using SoftDeletes trait and others not.

When we set config option 'subject_returns_soft_deleted_models' => true then calling subject() on any model not using SoftDeletes trait throws an exception: Call to undefined method Illuminate\Database\Eloquent\Builder::withTrashed().

Can the subject() method below be made to check first whether the Model uses the SoftDeletes trait? Or perhaps check whether withTrashed() is a defined method on the Model? I tried a few things but couldn't figure out how to get the class of the Model..

https://github.com/spatie/laravel-activitylog/blob/68eb6e65382f94fe86ce5ff6572159f80d024ba9/src/Models/Activity.php#L28-L35

View more
26 comments
bluec

bluec

7th Nov 2018 @ 13:44

enhancement good first issue

It should be possible to register hooks that get called when rendering different parts of Cachet.

This will allow third-party packages to render their own additional views.

Inspired by Filament's own render hooks, https://filamentphp.com/docs/3.x/support/render-hooks

View more
jbrooksuk

jbrooksuk

27th Oct 2024 @ 09:54

good first issue hacktoberfest

Once scheduled maintenance has completed, it should appear in the incident timeline.

View more
๐Ÿ‘ 1
jbrooksuk

jbrooksuk

5th Oct 2024 @ 07:42