dependabot[bot]
aa8ab44c79
Bump the minor-updates group across 1 directory with 18 updates
...
Bumps the minor-updates group with 18 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [brick/money](https://github.com/brick/money ) | `0.15.1` | `0.15.2` |
| [dedoc/scramble](https://github.com/dedoc/scramble ) | `0.13.45` | `0.13.48` |
| [filament/filament](https://github.com/filamentphp/panels ) | `5.8.4` | `5.10.2` |
| [gotenberg/gotenberg-php](https://github.com/gotenberg/gotenberg-php ) | `2.25.0` | `2.26.0` |
| [guzzlehttp/guzzle](https://github.com/guzzle/guzzle ) | `8.2.0` | `8.3.0` |
| [inertiajs/inertia-laravel](https://github.com/inertiajs/inertia-laravel ) | `3.3.4` | `3.5.1` |
| [laravel/fortify](https://github.com/laravel/fortify ) | `1.40.0` | `1.41.0` |
| [laravel/framework](https://github.com/laravel/framework ) | `13.33.0` | `13.37.0` |
| [laravel/octane](https://github.com/laravel/octane ) | `2.20.0` | `2.22.0` |
| [laravel/passport](https://github.com/laravel/passport ) | `13.8.0` | `13.10.0` |
| [maatwebsite/excel](https://github.com/SpartnerNL/Laravel-Excel ) | `4.0.3` | `4.0.4` |
| [stechstudio/filament-impersonate](https://github.com/stechstudio/filament-impersonate ) | `5.6.0` | `5.6.1` |
| [tightenco/ziggy](https://github.com/tighten/ziggy ) | `2.6.4` | `2.6.5` |
| [tpetry/laravel-postgresql-enhanced](https://github.com/tpetry/laravel-postgresql-enhanced ) | `3.7.0` | `3.10.0` |
| [fumeapp/modeltyper](https://github.com/fumeapp/modeltyper ) | `3.13.0` | `3.14.0` |
| [larastan/larastan](https://github.com/larastan/larastan ) | `3.12.2` | `3.13.0` |
| [laravel/sail](https://github.com/laravel/sail ) | `1.68.0` | `1.69.0` |
| [laravel/telescope](https://github.com/laravel/telescope ) | `5.25.0` | `5.26.0` |
Updates `brick/money` from 0.15.1 to 0.15.2
- [Release notes](https://github.com/brick/money/releases )
- [Changelog](https://github.com/brick/money/blob/main/CHANGELOG.md )
- [Commits](https://github.com/brick/money/compare/0.15.1...0.15.2 )
Updates `dedoc/scramble` from 0.13.45 to 0.13.48
- [Release notes](https://github.com/dedoc/scramble/releases )
- [Commits](https://github.com/dedoc/scramble/compare/v0.13.45...v0.13.48 )
Updates `filament/filament` from 5.8.4 to 5.10.2
- [Commits](https://github.com/filamentphp/panels/compare/v5.8.4...v5.10.2 )
Updates `gotenberg/gotenberg-php` from 2.25.0 to 2.26.0
- [Release notes](https://github.com/gotenberg/gotenberg-php/releases )
- [Commits](https://github.com/gotenberg/gotenberg-php/compare/v2.25.0...v2.26.0 )
Updates `guzzlehttp/guzzle` from 8.2.0 to 8.3.0
- [Release notes](https://github.com/guzzle/guzzle/releases )
- [Changelog](https://github.com/guzzle/guzzle/blob/8.3/CHANGELOG.md )
- [Commits](https://github.com/guzzle/guzzle/compare/8.2.0...8.3.0 )
Updates `inertiajs/inertia-laravel` from 3.3.4 to 3.5.1
- [Release notes](https://github.com/inertiajs/inertia-laravel/releases )
- [Changelog](https://github.com/inertiajs/inertia-laravel/blob/3.x/CHANGELOG.md )
- [Commits](https://github.com/inertiajs/inertia-laravel/compare/v3.3.4...v3.5.1 )
Updates `laravel/fortify` from 1.40.0 to 1.41.0
- [Release notes](https://github.com/laravel/fortify/releases )
- [Changelog](https://github.com/laravel/fortify/blob/1.x/CHANGELOG.md )
- [Commits](https://github.com/laravel/fortify/compare/v1.40.0...v1.41.0 )
Updates `laravel/framework` from 13.33.0 to 13.37.0
- [Release notes](https://github.com/laravel/framework/releases )
- [Changelog](https://github.com/laravel/framework/blob/13.x/CHANGELOG.md )
- [Commits](https://github.com/laravel/framework/compare/v13.33.0...v13.37.0 )
Updates `laravel/octane` from 2.20.0 to 2.22.0
- [Release notes](https://github.com/laravel/octane/releases )
- [Changelog](https://github.com/laravel/octane/blob/2.x/CHANGELOG.md )
- [Commits](https://github.com/laravel/octane/compare/v2.20.0...v2.22.0 )
Updates `laravel/passport` from 13.8.0 to 13.10.0
- [Release notes](https://github.com/laravel/passport/releases )
- [Changelog](https://github.com/laravel/passport/blob/13.x/CHANGELOG.md )
- [Commits](https://github.com/laravel/passport/compare/v13.8.0...v13.10.0 )
Updates `maatwebsite/excel` from 4.0.3 to 4.0.4
- [Release notes](https://github.com/SpartnerNL/Laravel-Excel/releases )
- [Changelog](https://github.com/SpartnerNL/Laravel-Excel/blob/4.x/CHANGELOG.md )
- [Commits](https://github.com/SpartnerNL/Laravel-Excel/compare/4.0.3...4.0.4 )
Updates `stechstudio/filament-impersonate` from 5.6.0 to 5.6.1
- [Release notes](https://github.com/stechstudio/filament-impersonate/releases )
- [Commits](https://github.com/stechstudio/filament-impersonate/compare/v5.6.0...v5.6.1 )
Updates `tightenco/ziggy` from 2.6.4 to 2.6.5
- [Release notes](https://github.com/tighten/ziggy/releases )
- [Changelog](https://github.com/tighten/ziggy/blob/2.x/CHANGELOG.md )
- [Commits](https://github.com/tighten/ziggy/compare/v2.6.4...v2.6.5 )
Updates `tpetry/laravel-postgresql-enhanced` from 3.7.0 to 3.10.0
- [Changelog](https://github.com/tpetry/laravel-postgresql-enhanced/blob/master/CHANGELOG.md )
- [Commits](https://github.com/tpetry/laravel-postgresql-enhanced/compare/3.7.0...3.10.0 )
Updates `fumeapp/modeltyper` from 3.13.0 to 3.14.0
- [Release notes](https://github.com/fumeapp/modeltyper/releases )
- [Commits](https://github.com/fumeapp/modeltyper/compare/v3.13.0...v3.14.0 )
Updates `larastan/larastan` from 3.12.2 to 3.13.0
- [Release notes](https://github.com/larastan/larastan/releases )
- [Changelog](https://github.com/larastan/larastan/blob/3.x/RELEASE.md )
- [Commits](https://github.com/larastan/larastan/compare/v3.12.2...v3.13.0 )
Updates `laravel/sail` from 1.68.0 to 1.69.0
- [Release notes](https://github.com/laravel/sail/releases )
- [Changelog](https://github.com/laravel/sail/blob/1.x/CHANGELOG.md )
- [Commits](https://github.com/laravel/sail/compare/v1.68.0...v1.69.0 )
Updates `laravel/telescope` from 5.25.0 to 5.26.0
- [Release notes](https://github.com/laravel/telescope/releases )
- [Changelog](https://github.com/laravel/telescope/blob/5.x/CHANGELOG.md )
- [Commits](https://github.com/laravel/telescope/compare/v5.25.0...v5.26.0 )
---
updated-dependencies:
- dependency-name: brick/money
dependency-version: 0.15.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: minor-updates
- dependency-name: dedoc/scramble
dependency-version: 0.13.48
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: minor-updates
- dependency-name: filament/filament
dependency-version: 5.10.2
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor-updates
- dependency-name: gotenberg/gotenberg-php
dependency-version: 2.26.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor-updates
- dependency-name: guzzlehttp/guzzle
dependency-version: 8.3.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor-updates
- dependency-name: inertiajs/inertia-laravel
dependency-version: 3.5.1
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor-updates
- dependency-name: laravel/fortify
dependency-version: 1.41.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor-updates
- dependency-name: laravel/framework
dependency-version: 13.37.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor-updates
- dependency-name: laravel/octane
dependency-version: 2.22.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor-updates
- dependency-name: laravel/passport
dependency-version: 13.10.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor-updates
- dependency-name: maatwebsite/excel
dependency-version: 4.0.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: minor-updates
- dependency-name: stechstudio/filament-impersonate
dependency-version: 5.6.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: minor-updates
- dependency-name: tightenco/ziggy
dependency-version: 2.6.5
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: minor-updates
- dependency-name: tpetry/laravel-postgresql-enhanced
dependency-version: 3.10.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor-updates
- dependency-name: fumeapp/modeltyper
dependency-version: 3.14.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: minor-updates
- dependency-name: larastan/larastan
dependency-version: 3.13.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: minor-updates
- dependency-name: laravel/sail
dependency-version: 1.69.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: minor-updates
- dependency-name: laravel/telescope
dependency-version: 5.26.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: minor-updates
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-10-19 08:06:04 +00:00
Gregor Vostrak
b46f015754
Always show the create goal button and open the upgrade modal when the goal limit is reached
2026-10-14 16:59:51 +02:00
Gregor Vostrak
fc8985f513
Invalidate goals after time entry and member changes
2026-10-14 16:59:51 +02:00
Constantin Graf
812b3f2f54
Update billing extension to v0.0.11
2026-10-14 15:15:24 +02:00
Constantin Graf
4b25b2adfa
Mention all import sources and warn about billable data not being imported on free plan
2026-10-14 15:15:24 +02:00
Constantin Graf
9557296eb0
Skip enabled extensions without vite config in vite module loader
2026-10-14 15:15:24 +02:00
Constantin Graf
c69edc81be
Add tests for billable rate restriction in importers and API edge cases
2026-10-14 15:15:24 +02:00
Constantin Graf
902270a189
Only check billable rate restriction if time entry becomes billable
2026-10-14 15:15:24 +02:00
Constantin Graf
f60c9ca457
Move billable rate restriction tests to the endpoint tests of the specific endpoints
2026-10-14 15:15:24 +02:00
Constantin Graf
1c41432389
Enforce billable rate restriction in controllers and importers instead of model hooks
2026-10-14 15:15:24 +02:00
Gregor Vostrak
3197c8c7a0
update invoicing and billing extensions to tagged releases
2026-10-14 15:15:24 +02:00
Gregor Vostrak
b8761dffce
load billable rate limits extension branches for billing and invoicing
2026-10-14 15:15:24 +02:00
Gregor Vostrak
ba2b37f264
add billable rate restriction for free organizations
2026-10-14 15:15:24 +02:00
Gregor Vostrak
9e6013eaf1
move upgrade modal to ui package and add trial status and cancel trial ui
2026-10-14 15:15:24 +02:00
Gregor Vostrak
11dd4e174e
add time entry filter normalizeation
2026-10-14 14:11:16 +02:00
Constantin Graf
b73cdc4bb5
Detect time entries with a task but no project in consistency check
...
The comparison used != which evaluates to NULL when the time entry has no
project, so entries that kept their task after the project was removed
were not reported.
2026-10-14 13:20:21 +02:00
Gregor Vostrak
e82c601449
Remove task from time entry when project changes without a new task
...
PUT /time-entries/{id} accepted a new project_id while keeping a task from
the previous project, leaving the entry with a task that belongs to a
different project. The bulk endpoint already handled a project switch but
kept the task when the project was removed.
Both endpoints now remove the task whenever project_id is changed without
task_id and the current task does not belong to the new project.
2026-10-14 13:20:21 +02:00
Constantin Graf
f65a1532ad
Delete running time entries of placeholder when merging members
...
The running time entries of the merged member could give the destination
member a second running time entry. The placeholder is deleted after the
merge, so its running time entries can not stay with it.
2026-10-14 11:11:53 +02:00
Constantin Graf
b42e84294c
Skip running time entries in solidtime import
...
Imported running time entries could give a user a second running time
entry, for example when an export is imported again while a timer runs.
2026-10-14 11:11:53 +02:00
Constantin Graf
1863953a23
Reject changing the member of running time entries
...
Moving a running time entry to another member could give that member's
user a second running time entry. Stopping the time entry and changing
the member in the same request is still allowed.
2026-10-14 11:11:53 +02:00
Constantin Graf
ce9413a55e
Allow only one running time entry per user across organizations
...
The running time entry check in the store endpoint was scoped to the
member, so a user could start a time entry in each of their
organizations. The active time entry endpoint and the database
consistency check expect only one running time entry per user.
2026-10-14 11:11:53 +02:00
Constantin Graf
b08364770c
Lock creation of running time entries to prevent race condition
...
Concurrent requests could both pass the running time entry check and
create more than one running time entry for the same member.
2026-10-14 11:11:53 +02:00
Constantin Graf
26926d3b2c
Add correction command to delete time entries with end before start
2026-10-14 10:45:36 +02:00
Constantin Graf
fd008dd4a8
Prevent time entries with end before start
...
Partial updates of time entries only validated end against start if both
were part of the payload. Start and end are now also validated against the
persisted value if only one of them is sent (fixes #1189 ).
The importers now fail if the end of a time entry is before the start and
the database consistency check reports such time entries.
2026-10-14 10:45:36 +02:00
Constantin Graf
9a845bad8f
Raise default ZIP file limit for imports to 10000
...
Toggl exports contain two files per project, so the previous limit of 100 rejected workspaces with more than about 40 projects.
2026-10-14 10:45:15 +02:00
Constantin Graf
b9e3f55537
Store admin panel import uploads on private disk and delete them after import
...
The Filament import upload was stored on the public disk and never deleted.
2026-10-14 10:45:15 +02:00
Constantin Graf
0b2a417788
Store copy of import data on private disk for debugging
...
Re-adds the copy of the import data that was removed in 70646a0d . Every import stores its raw data in import/{date}-{organizationId}-{uuid} on the private disk.
2026-10-14 10:45:15 +02:00
Constantin Graf
65525791a6
Throw import exception for missing references in solidtime import
...
Time entries referencing a user, member, client, project or task that is not part of the import caused a TypeError, which surfaced as "Unknown error".
2026-10-14 10:45:15 +02:00
Constantin Graf
0c58896b00
Run OSS Scanner image on Octane/FrankenPHP and bundle Gotenberg
...
Production runs as long-lived Octane workers in FrankenPHP worker mode, so state leaking between requests
(static properties, singletons, ...) is a real risk that php artisan serve cannot reproduce. Base the scanner image
on the production FrankenPHP image, add start-octane.sh (single worker, production Caddyfile) and describe this
class of issue in the threat model.
Bundle Gotenberg (Chromium only) so the PDF export tests pass offline and PDF rendering can be exercised.
2026-10-09 18:10:44 +02:00
Constantin Graf
6301b0f4a1
Clarify that super admins are trusted in OSS Scanner threat model
2026-10-09 18:10:44 +02:00
Constantin Graf
4c993c8eb2
Add OSS Scanner build environment and threat model
2026-10-09 18:10:44 +02:00
Constantin Graf
ae6937d012
Updated auditing extension to v0.0.5
2026-10-09 15:09:41 +02:00
Constantin Graf
1256fa61bd
Updated invoicing extension to v0.0.10
2026-10-09 14:42:41 +02:00
Constantin Graf
d6f80e23fb
Run core PHPUnit tests with extensions enabled in CI
2026-10-09 14:42:41 +02:00
Gregor Vostrak
c994345de9
fix scramble diagnostics in goal resource and requests
2026-10-08 20:47:12 +02:00
Gregor Vostrak
e56a659723
remove PaginatedResourceCollection from goal collection after scramble 0.13 update
2026-10-08 20:47:12 +02:00
Gregor Vostrak
c3529e4373
improve goal target formatting in superadmin interface
2026-10-08 20:47:12 +02:00
Gregor Vostrak
81c923644d
fix broken loading spinner position on initial load
2026-10-08 20:47:12 +02:00
Gregor Vostrak
689b2e93e1
move goal progress calculation out of the resources
2026-10-08 20:47:12 +02:00
Gregor Vostrak
63ca886154
Add goals feature for personal goals with filters
2026-10-08 20:47:12 +02:00
Constantin Graf
5010a5be3a
Use database in API docs diagnostics test so Scramble can read model schemas
2026-10-08 16:39:46 +02:00
Constantin Graf
b05f275fe8
Updated invoicing extension to v0.0.9
2026-10-08 16:39:46 +02:00
Constantin Graf
f01a4111b6
Fix Scramble API docs warnings
...
Remove redundant @var annotations from API resources and defer the user
access in the email unique rule of UserUpdateRequest, so rules() can be
evaluated by Scramble without route model binding. Add a test that fails
on any Scramble diagnostic and tests for the email unique rule.
2026-10-08 16:39:46 +02:00
Gregor Vostrak
4a2f78931a
add playwright e2e support for extensions
2026-10-08 16:07:26 +02:00
Constantin Graf
ed2f19f58b
Fix API docs generation with Scramble 0.13
...
Scramble 0.13 moved the collected resource type of resource collections
to a different template slot, which broke the custom paginated resource
collection extension and the API docs export. Scramble now infers
paginated responses natively, so the extension, the marker interface and
the @return annotations that overrode the inference are removed.
Scramble 0.13 also documents closure routes, so the API fallback routes
are moved to a controller that is excluded from the docs.
Add a test that exports the API docs.
2026-10-08 12:38:03 +02:00
Constantin Graf
fde944a84f
Updated extensions
2026-10-07 18:43:16 +02:00
Constantin Graf
34273a4863
Add audit owner through parent model
...
Models that belong to an organization via a parent model (for example
project members via their project) implement AuditableThroughParent and
return the parent relation. The owner organization of their audits is
taken from the loaded parent if it matches the foreign key, otherwise it
is queried. The declaration is also used to backfill the owner of
existing audits.
2026-10-07 18:43:16 +02:00
Constantin Graf
6fe721fc26
Updated extensions to audit improvement branches
2026-10-07 18:43:16 +02:00
Constantin Graf
f921452419
Add marker for auditable models without owner
...
Models implementing AuditableWithoutOwner intentionally have no audit
owner, either because they belong to neither an organization nor a user,
or because they and their audits have to be kept when the owner is
deleted (for example billing records). Adds helpers and a scope on the
audit model to find audits that are missing an owner although they
should have one.
2026-10-07 18:43:16 +02:00
Constantin Graf
30a90f80e0
Updated extensions to audit improvement branches
2026-10-07 18:43:16 +02:00