Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
459 commits
Select commit Hold shift + click to select a range
9c117b7
Merge pull request #1150 from linuxserver/2.x-project
aptalca Apr 19, 2023
427353b
add search via select2 for application dropdown
TheDen Apr 29, 2023
1f5493a
fix sortable tooltip (#1130)
dairidong May 16, 2023
60facca
Remove register route (#1163)
KodeStar May 20, 2023
6e954a3
Add Trianglify (#1158)
ullbergm May 26, 2023
7d016cd
fix: Remove mix from trianglify.js (#1166)
keriati May 26, 2023
5d67f57
fix: validate icons to be images (#1167)
keriati Jun 5, 2023
fbd050d
fix: validate icons to be images (#1173)
keriati Jun 6, 2023
d2184ee
Update readme.md (#1186)
Eonloop Aug 9, 2023
431eafb
Fix and add SVG support
fyutins Sep 26, 2023
768e7a6
Merge pull request #1222 from fyutins/2.x
KodeStar Nov 11, 2023
2e96b7b
Update app.php version
KodeStar Nov 11, 2023
ecb668a
Merge pull request #1155 from TheDen/add-search-application-item
KodeStar Feb 12, 2024
51b30e5
Adopt short array syntax
laravel-shift Feb 16, 2024
be93195
Convert string references to `::class`
laravel-shift Feb 16, 2024
825ff6a
Move `resources/lang` folder
laravel-shift Feb 16, 2024
aa72ce0
Shift registered middleware
laravel-shift Feb 16, 2024
2b602ce
Streamline `$commands` property
laravel-shift Feb 16, 2024
d41c4c8
Replace deprecated `HEADER_X_FORWARDED_ALL` constant
laravel-shift Feb 16, 2024
72cd16a
Upgrade to Flysystem 3.0
laravel-shift Feb 16, 2024
6423ccd
Shift core files
laravel-shift Feb 16, 2024
0f4b336
Remove web.config
laravel-shift Feb 16, 2024
ad86e54
Remove unnecessary `$model` property
laravel-shift Feb 16, 2024
14b89ac
Convert route options to fluent methods
laravel-shift Feb 16, 2024
42b5a29
Adopt class based routes
laravel-shift Feb 16, 2024
ee3361d
Shift config files
laravel-shift Feb 16, 2024
a6ae602
Default config files
laravel-shift Feb 16, 2024
04b8ede
Bump Composer dependencies
laravel-shift Feb 16, 2024
4bfcd64
Use `<env>` tags for configuration
laravel-shift Feb 16, 2024
1c73cf0
Adopt anonymous migrations
laravel-shift Feb 16, 2024
0189965
Shift cleanup
laravel-shift Feb 16, 2024
095aff8
Merge pull request #7 from KodeStar/shift-110367
KodeStar Feb 16, 2024
3188a8f
Convert string references to `::class`
laravel-shift Feb 16, 2024
b943674
Remove explicit call to register policies
laravel-shift Feb 16, 2024
ef25ec4
Shift core files
laravel-shift Feb 16, 2024
5b4e14d
Shift config files
laravel-shift Feb 16, 2024
854fb42
Default config files
laravel-shift Feb 16, 2024
e902b3a
Bump Composer dependencies
laravel-shift Feb 16, 2024
8725493
Rename `password_resets` table
laravel-shift Feb 16, 2024
2cb837e
Add type hints for Laravel 10
laravel-shift Feb 16, 2024
3487f52
Add type hints from DocBlocks
laravel-shift Feb 16, 2024
f3a5be7
Remove redundant typing from DocBlocks
laravel-shift Feb 16, 2024
22d7a59
Merge pull request #8 from KodeStar/shift-110368
KodeStar Feb 16, 2024
d52ae0d
Update dependencies
Feb 16, 2024
ffb5b03
Update version
Feb 16, 2024
5e2c3a5
Merge pull request #1276 from KodeStar/2.x
KodeStar Feb 16, 2024
70f212c
Update readme.md
KodeStar Feb 16, 2024
9fbb345
Add Laravel 10 dependencies
KodeStar Feb 17, 2024
2748945
Update php version in CI tests
Feb 17, 2024
2fea82c
Change to php 8.3
KodeStar Feb 17, 2024
e7d5812
Update ci.yml
KodeStar Feb 17, 2024
39f2310
Update ci.yml
KodeStar Feb 17, 2024
c69961b
Merge pull request #1277 from KodeStar/2.x
KodeStar Feb 17, 2024
a0e5111
Fix languages
Feb 17, 2024
379ba34
Merge pull request #1278 from KodeStar/bugfix/fix_language_dropdown
KodeStar Feb 17, 2024
5825858
Unable to load apps after update to laravel 10
Feb 17, 2024
e9bfd9a
Merge pull request #1280 from KodeStar/bugfix/unable_to_load_apps
KodeStar Feb 17, 2024
2899b7d
Add missing
Feb 17, 2024
23f3a9c
Merge pull request #1283 from KodeStar/bugfix/unable_to_load_apps
KodeStar Feb 17, 2024
8781dbc
Add npm dependencies
laravel-shift Feb 17, 2024
aa5a6fc
Update build scripts
laravel-shift Feb 17, 2024
3a3cea4
Configure Vite
laravel-shift Feb 17, 2024
4430b21
Remove `webpack.mix.js`
laravel-shift Feb 17, 2024
baf7131
Use ES modules
laravel-shift Feb 17, 2024
f3a4ac3
Rename ENV variables
laravel-shift Feb 17, 2024
0f19e3c
Add `.vue` extension to Vue imports
laravel-shift Feb 17, 2024
c6c9ec1
Ignore build assets
laravel-shift Feb 17, 2024
029def9
Update vite
Feb 17, 2024
0de1e5b
Merge pull request #9 from KodeStar/shift-110402
KodeStar Feb 17, 2024
afc07ab
Update ci.yml
KodeStar Feb 17, 2024
3a509fc
Merge pull request #1288 from KodeStar/2.x
KodeStar Feb 17, 2024
36d1d55
Revert "Replace Mix with Vite"
KodeStar Feb 17, 2024
d184427
Merge pull request #1289 from linuxserver/revert-1288-2.x
KodeStar Feb 17, 2024
8fa870e
Initial commit
Feb 17, 2024
a0726a4
Updates
Feb 17, 2024
d276bf8
Add alternate tag types
Feb 18, 2024
70252b7
Fix prettier complaints
Feb 18, 2024
b7c0fd2
Fix extra prettier complaints
Feb 18, 2024
002bae3
Merge pull request #1290 from KodeStar/feature/add_columns
KodeStar Feb 18, 2024
fb7f9de
Fix upload paths
Feb 18, 2024
809a997
Merge pull request #1291 from KodeStar/2.x
KodeStar Feb 18, 2024
4b8bf51
Fix prettier complaints
Feb 19, 2024
09e4bb8
Fix required fields and default items and tags to pinned
Feb 19, 2024
f3bc6ab
Add tags to application list, and fix home dashboard tag
Feb 19, 2024
599035b
Fix empty title when creating
Feb 19, 2024
9d0209c
Merge pull request #1293 from KodeStar/2.x
KodeStar Feb 19, 2024
c16a484
Update version number
KodeStar Feb 19, 2024
f405cf2
Update validation.php
KodeStar Mar 31, 2024
184e19a
chore: fix some typos in comments
goodactive Apr 19, 2024
6188b1d
Added Serbian translation
tremor021 Sep 27, 2024
07ea22d
Merge pull request #1328 from goodactive/2.x
KodeStar Nov 4, 2024
a497386
Merge pull request #1372 from tremor021/2.x
KodeStar Nov 4, 2024
837f5c4
Throttle websitelookup's to 10 per minute to limit port scan effictiv…
Nov 4, 2024
026bcf9
Merge pull request #1384 from linuxserver/feature/throttle_websitelookup
KodeStar Nov 4, 2024
b880333
Fixes #1386
Nov 4, 2024
18609fb
Update Spanish translations
dfernandezdaw Nov 4, 2024
1063d2c
Update app.php
KodeStar Nov 5, 2024
395c775
Merge pull request #1387 from linuxserver/bugfix/search_category_tiles
KodeStar Nov 5, 2024
c2a3368
Search from URL fixed #1369
Nov 5, 2024
8ba8f0c
Prettier fix
Nov 5, 2024
5ccb87c
Fix 2 dots that are visible on light backgrounds #1383
Nov 5, 2024
014f054
Merge pull request #1390 from linuxserver/feature/search_from_url
KodeStar Nov 5, 2024
8f360f9
Merge branch '2.x' into bugfix/two_dots
KodeStar Nov 5, 2024
2b43760
Merge pull request #1391 from linuxserver/bugfix/two_dots
KodeStar Nov 5, 2024
f820c0b
Merge pull request #1388 from dfernandezdaw/2.x
KodeStar Nov 5, 2024
be59ac7
Allow ico images fixes #1357
Nov 5, 2024
b90b38e
Merge pull request #1392 from linuxserver/bugfix/allow_ico_images
KodeStar Nov 5, 2024
e9d5614
Add warp on userlist
riv-gh Apr 25, 2025
c56ffe1
fixed some rebase conflicts
tkolzer Jun 20, 2024
d146fed
hide switchuser when auth_role is used
tkolzer Jan 28, 2024
921631b
fixed some rebase conflicts
tkolzer Jun 20, 2024
f7de56b
added missing variable to example env
tkolzer Jan 28, 2024
c08b0bf
changed naming of property
tkolzer Jan 31, 2024
808c41a
disabled users, items, tags for non admin users and user and login fo…
tkolzer Jan 31, 2024
041ec42
updated supportedapps
tkolzer Feb 4, 2024
dff3f90
Update readme.md
tkolzer Feb 4, 2024
65a6ad5
small
tkolzer Feb 4, 2024
3cbbf80
corrected some spelling mistakes
tkolzer Jun 15, 2024
2e5d745
added ENV variable for the auth roles delimiter
tkolzer Jun 16, 2024
c71479f
fixed some typos
tkolzer Jun 17, 2024
55d3766
added AUTH_ROLES_DELIMITER to example env file
tkolzer Jun 17, 2024
5950ca9
renamed "controles" to "controls"
knom May 5, 2025
749442e
Merge pull request #1454 from knom/2.x
KodeStar Jul 10, 2025
11453e1
Merge pull request #1453 from riv-gh/bugfix/userlist-wrap
KodeStar Jul 10, 2025
c1c3888
Apply code style
laravel-shift Jul 10, 2025
b3cdc57
Slim `lang` files
laravel-shift Jul 10, 2025
b9e75b9
Remove default `app` files
laravel-shift Jul 10, 2025
7153a41
Shift core files
laravel-shift Jul 10, 2025
48e16eb
Streamline config files
laravel-shift Jul 10, 2025
1fb6f75
Set new `ENV` variables
laravel-shift Jul 10, 2025
474059e
Default new `bootstrap/app.php`
laravel-shift Jul 10, 2025
42d29f0
Re-register HTTP middleware
laravel-shift Jul 10, 2025
9091d1d
Consolidate service providers
laravel-shift Jul 10, 2025
8554861
Re-register service providers
laravel-shift Jul 10, 2025
f5ddd93
Re-register routes
laravel-shift Jul 10, 2025
7bb0a7c
Bump Composer dependencies
laravel-shift Jul 10, 2025
53f28b5
Adopt anonymous migrations
laravel-shift Jul 10, 2025
968a582
Adopt Laravel type hints
laravel-shift Jul 10, 2025
f0ce9d6
Remove `createApplication` method
laravel-shift Jul 10, 2025
ecc54b6
Merge pull request #13 from KodeStar/shift-154023
KodeStar Jul 10, 2025
e251f4f
Swap dependency
laravel-shift Jul 10, 2025
638d2fe
Convert `Form` facade
laravel-shift Jul 10, 2025
d972cbc
Merge pull request #14 from KodeStar/shift-154026
KodeStar Jul 10, 2025
8fb6438
Updates to vendors etc
Jul 11, 2025
f197aeb
Fix forms on enhanced apps
Jul 11, 2025
22f66d3
Throw error if image doesn't have an extension #1446
Jul 11, 2025
d1801d1
Update cache version
Jul 11, 2025
abbc78e
Merge pull request #1464 from KodeStar/2.x
KodeStar Jul 11, 2025
2df5847
Fix uploads and displaying of malicious SVG files
Jul 13, 2025
0388ee9
Merge pull request #1466 from KodeStar/2.x
KodeStar Jul 13, 2025
69bc8cb
Fixes to reduce the SSRF attack vector.
Jul 13, 2025
53fd624
Merge pull request #1467 from KodeStar/2.x
KodeStar Jul 14, 2025
1e6b1f6
Add tests and fix user edit form
Jul 15, 2025
4fa41d8
Merge pull request #1469 from KodeStar/2.x
KodeStar Jul 15, 2025
6075dcc
Fix importing apps and logging in
Jul 17, 2025
abe08a7
Merge pull request #1470 from KodeStar/2.x
KodeStar Jul 17, 2025
0d90170
Add cache table
Jul 17, 2025
57e0a33
Merge pull request #1471 from KodeStar/2.x
KodeStar Jul 17, 2025
08b8ab6
Add misisng input type in the form builder
Jul 21, 2025
e42f78b
Merge pull request #1473 from KodeStar/2.x
KodeStar Jul 21, 2025
31db31d
Fixed multiple typos (German translation)
micvog Jul 21, 2025
a8e4ab4
Load in configs values if class has been lost
Jul 22, 2025
41aa255
Add missing variable
Jul 22, 2025
1ccc0da
Merge pull request #1476 from KodeStar/2.x
KodeStar Jul 22, 2025
d1a96dd
Escape search queries and add setting value on edit
Jul 24, 2025
6b9f61b
Merge pull request #1477 from KodeStar/2.x
KodeStar Jul 24, 2025
dce37c1
feat(icon-upload): proxy management
Nyuwb Jul 31, 2025
fd926e9
Fix for some enhanced apps not working
Aug 2, 2025
63e777b
Redirect to search provider without error fixes #1482
Aug 2, 2025
cd95fc3
Update search test
Aug 2, 2025
31ca05f
Merge pull request #1483 from KodeStar/2.x
KodeStar Aug 2, 2025
7d93099
Delete SECURITY.md
thespad Aug 23, 2025
ad4584e
Merge pull request #1488 from linuxserver/inherit-security-md
thespad Aug 23, 2025
05a552f
Merge pull request #1475 from micvog/fix-german-translation
KodeStar Sep 10, 2025
825f67a
Merge pull request #1480 from Nyuwb/patch-1
KodeStar Sep 10, 2025
517f51b
Update items with no password
Sep 10, 2025
c9ea2cd
Merge pull request #1496 from KodeStar/bugfix/update_proxy_and_items_…
KodeStar Sep 10, 2025
eadd9d1
Update app.php
webmogul1 Sep 11, 2025
31f1ba8
Add current background maxsize #1501
Sep 15, 2025
54cf2b8
Update application version to 2.7.6
KodeStar Sep 15, 2025
966279b
Merge pull request #1499 from webmogul1/patch-1
KodeStar Sep 15, 2025
ae4ce92
Merge pull request #1503 from KodeStar/background_max_file_size
KodeStar Sep 15, 2025
6d12c54
Add password field
Sep 15, 2025
32bf1d0
Add password field to fix #1498
KodeStar Sep 15, 2025
755c3e5
Fix tag list url when tags are treated as tags
Sep 16, 2025
045bdf0
Merge pull request #1507 from KodeStar/taglist
KodeStar Sep 16, 2025
852c231
Add autocomplete suggestions support and added to bing, duckduckgo, a…
Nov 11, 2025
4f30332
Fix lint issues
Nov 11, 2025
900fc83
Merge pull request #1523 from KodeStar/add_autocomplete_suggestions
KodeStar Nov 11, 2025
130661b
Remove search provider dropdown when there's only a single provider
Nov 11, 2025
66dfe95
Fix lint issue
Nov 11, 2025
7861ae1
Merge pull request #1524 from KodeStar/remove_dropdown_on_single_prov…
KodeStar Nov 11, 2025
243ad00
Bound retry and unique-lock lifetimes on UpdateApps and ProcessApps
JoshSalway Apr 22, 2026
44be3cb
Drop tests/Feature/QueueSafetyTest.php
JoshSalway Apr 22, 2026
5be7a65
Tighten retry shape: $tries=1, $uniqueFor=600, drop $timeout and $bac…
JoshSalway Apr 22, 2026
98b6d96
Enrich failed() log context with exception class and file:line
JoshSalway Apr 22, 2026
56c53ab
Prove failed() log shape with behavior test
JoshSalway Apr 22, 2026
cbf099b
Remove QueueFailedHandlerTest from the shipped suite
JoshSalway Apr 22, 2026
6a776e3
fix: proxy options in ItemController
Nyuwb May 13, 2026
df0eba0
Merge pull request #1563 from Nyuwb/patch-1
KodeStar Jul 8, 2026
5907a1f
Merge pull request #1559 from JoshSalway/queue-safety-2026-04-22
KodeStar Jul 8, 2026
fb9af1b
Include tags in item export and restore them on import
KodeStar Jul 8, 2026
881533b
Harden against host header injection and open redirect
KodeStar Jul 8, 2026
f547ae4
Return graceful output from get_stats instead of a 500
KodeStar Jul 8, 2026
5247349
Fix CI: pin Node 24 and install frontend deps with npm ci
KodeStar Jul 8, 2026
e2215fe
Merge pull request #1571 from linuxserver/fix/ci-node-select2
KodeStar Jul 8, 2026
d1c52b8
Merge branch '2.x' into fix/getstats-graceful-failure
KodeStar Jul 8, 2026
5dcf462
Merge branch '2.x' into fix/host-header-injection
KodeStar Jul 8, 2026
ec229ea
Merge branch '2.x' into fix/export-import-tags
KodeStar Jul 8, 2026
f69cbba
Update dependencies flagged by security advisories and require PHP 8.4
KodeStar Jul 8, 2026
c0c202c
Add a configurable default tag for the dashboard
KodeStar Jul 8, 2026
9a9877a
Enforce TRUSTED_HOSTS allow-list regardless of APP_ENV
KodeStar Jul 8, 2026
ad9baff
Only offer pinned tags as the default tag
KodeStar Jul 8, 2026
0763484
Merge pull request #1570 from linuxserver/fix/getstats-graceful-failure
KodeStar Jul 8, 2026
a1f0d8f
Merge pull request #1568 from linuxserver/fix/host-header-injection
KodeStar Jul 8, 2026
caa4f39
Merge pull request #1567 from linuxserver/fix/export-import-tags
KodeStar Jul 8, 2026
6d0242d
Merge pull request #1572 from linuxserver/feature/default-tag-group
KodeStar Jul 8, 2026
cb59689
Merge pull request #1569 from linuxserver/chore/security-dependency-u…
KodeStar Jul 8, 2026
3919188
Upgrade to Laravel 12
KodeStar Jul 8, 2026
8a62254
Upgrade to Laravel 13
KodeStar Jul 8, 2026
9cfa254
Remediate npm build-toolchain vulnerabilities via overrides
KodeStar Jul 8, 2026
46e09d1
Add upgrade-regression test coverage
KodeStar Jul 8, 2026
f1eec81
Fix appload() returning a coerced HTTP 200 instead of a 404
KodeStar Jul 8, 2026
25d1dc3
Bump version to 2.8.0
KodeStar Jul 8, 2026
13642d5
Fix committed PHPUnit vendor path casing for case-sensitive CI
KodeStar Jul 8, 2026
6f93291
Fix import status regression from appload 404 + tighten upgrade tests
KodeStar Jul 9, 2026
49c29c8
Merge pull request #1574 from linuxserver/chore/laravel-13-upgrade
KodeStar Jul 9, 2026
2555ab1
Run tests against in-memory sqlite and refuse real databases
KodeStar Jul 9, 2026
1c7ae3e
Fix silent tile disappearance and ownership-reassignment bugs
KodeStar Jul 9, 2026
3f483c9
Merge pull request #1575 from linuxserver/chore/laravel-13-upgrade
KodeStar Jul 9, 2026
93a321f
Add WebSocket support for TrueNAS JSON-RPC 2.0 API
jaycollett Jan 29, 2026
bdf9160
Add global TLS verification skip setting
jaycollett Jan 29, 2026
57fa9f2
Fix checkbox config values always returning "1"
jaycollett Jul 9, 2026
d16b7f6
Vendor phrity/websocket dependency and fix v3 exception namespace
KodeStar Jul 9, 2026
667dd4c
Merge pull request #1576 from linuxserver/feat/global-tls-skip
KodeStar Jul 9, 2026
55bda9d
Merge pull request #1577 from linuxserver/fix/checkbox-test-config
KodeStar Jul 9, 2026
1f7432f
Merge pull request #1578 from linuxserver/feat/truenas-websocket-client
KodeStar Jul 9, 2026
a38ecd4
Automate bumping version
KodeStar Jul 9, 2026
327af60
Update CI
KodeStar Jul 9, 2026
6a45d44
Bump version to 2.8.1
github-actions[bot] Jul 9, 2026
8fc5f3c
Merge pull request #1579 from linuxserver/release/v2.8.1
KodeStar Jul 9, 2026
2ceec61
Update German translation
tuxinaut Jul 10, 2026
62823ae
Merge pull request #1580 from tuxinaut/chore/de-language-update
KodeStar Jul 10, 2026
91f7a2e
Fix inconsistent SVG tile icon sizes
KodeStar Aug 3, 2026
238452c
Merge pull request #1583 from linuxserver/fix/app-icon-consistent-size
KodeStar Aug 3, 2026
0620ec2
Pin session cookie name, stop deriving it from APP_NAME
pilotso11 Aug 8, 2026
0cae68c
Merge pull request #1585 from pilotso11/fix/session-cookie-appname-dot
KodeStar Aug 12, 2026
ee30662
Bump version to 2.8.2
github-actions[bot] Aug 12, 2026
40e3f17
Merge pull request #1587 from linuxserver/release/v2.8.2
KodeStar Aug 12, 2026
0124b77
fix: validate icon URL to prevent server-side request forgery
bunlongheng Aug 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
40 changes: 38 additions & 2 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,44 @@ APP_KEY=
APP_DEBUG=false
APP_URL=http://localhost

# Security: Host Header Injection / Open Redirect hardening (CVE-2025-50578).
# TRUSTED_PROXIES: comma-separated CIDRs/IPs of reverse proxies allowed to set
# X-Forwarded-* headers. Defaults to the private ranges below when unset. Use
# "*" to trust all proxies (only behind a trusted network boundary).
#TRUSTED_PROXIES=192.168.0.0/16,172.16.0.0/12,10.0.0.0/8,127.0.0.1
# TRUSTED_HOSTS: comma-separated hostnames Heimdall is allowed to serve. Unset
# means no restriction (default, backward compatible). Set this to your own
# domain to fully prevent host-header injection / open redirects.
#TRUSTED_HOSTS=heimdall.example.com

APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file
APP_MAINTENANCE_STORE=database
BCRYPT_ROUNDS=12

LOG_CHANNEL=daily
LOG_STACK=single

DB_CONNECTION=sqlite
DB_DATABASE=app.sqlite

BROADCAST_DRIVER=log
CACHE_DRIVER=file
#DB_CONNECTION=<mysql | pgsql>
#DB_HOST=<hostname | ip>
#DB_PORT=<port number>
#DB_DATABASE=<database>
#DB_USERNAME=<user>
#DB_PASSWORD=<password>

BROADCAST_CONNECTION=log
CACHE_STORE=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
Expand Down Expand Up @@ -41,3 +69,11 @@ PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

AUTH_ROLES_ENABLE=false
AUTH_ROLES_HEADER="remote-groups"
AUTH_ROLES_HTTP_HEADER="HTTP_REMOTE_GROUPS"
AUTH_ROLES_ADMIN="admin"
AUTH_ROLES_DELIMITER=","

ALLOW_INTERNAL_REQUESTS=false
3 changes: 3 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
huebee.js
jquery-ui.min.js
bootstrap.js
13 changes: 13 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"extends": ["airbnb-base", "prettier"],
"plugins": ["prettier"],
"rules": {
"prettier/prettier": ["error"]
},
"env": {
"browser": true
},
"globals": {
"$": true
}
}
16 changes: 16 additions & 0 deletions .github/workflows/call_issue_pr_tracker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: Issue & PR Tracker

on:
issues:
types: [opened,reopened,labeled,unlabeled,closed]
pull_request_target:
types: [opened,reopened,review_requested,review_request_removed,labeled,unlabeled,closed]
pull_request_review:
types: [submitted,edited,dismissed]

jobs:
manage-project:
permissions:
issues: write
uses: linuxserver/github-workflows/.github/workflows/issue-pr-tracker.yml@v1
secrets: inherit
13 changes: 13 additions & 0 deletions .github/workflows/call_issues_cron.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
name: Mark stale issues and pull requests
on:
schedule:
- cron: '35 15 * * *'
workflow_dispatch:

jobs:
stale:
permissions:
issues: write
pull-requests: write
uses: linuxserver/github-workflows/.github/workflows/issues-cron.yml@v1
secrets: inherit
59 changes: 59 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: Tests (PHP)

on: [pull_request]

jobs:
tests:
name: Run tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1

- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
with:
php-version: '8.4'
extensions: mbstring, dom, fileinfo, mysql, libxml, xml, xmlwriter, dom, tokenizer, filter, json, phar, pcre, openssl, pdo, intl, curl

- name: Cache composer dependencies
uses: actions/cache@v4
with:
path: vendor
key: composer-${{ hashFiles('composer.lock') }}

#- name: Run composer install
# run: composer install -n --prefer-dist
# env:
# APP_ENV: testing

- name: Prepare Laravel Application
run: |
cp .env.example .env
php artisan key:generate

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '24'
cache: 'npm'

- name: Install node modules and build assets
run: npm ci && npm run dev

- name: Run ESLint
run: npm run lint

- name: Run tests
run: php artisan test
env:
APP_ENV: testing

- name: Php code sniffer
run: ./vendor/bin/phpcs --config-set ignore_warnings_on_exit 1

- name: Upload artifacts
uses: actions/upload-artifact@master
if: failure()
with:
name: Logs
path: ./storage/logs
97 changes: 97 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
name: Release

# Stage 1 of the release flow: opens a version-bump PR against 2.x.
# When that PR is merged, tag-release.yml (stage 2) creates the tag and
# the GitHub release automatically.
on:
workflow_dispatch:
inputs:
bump:
description: 'Version bump type'
required: true
default: 'patch'
type: choice
options:
- patch
- minor
- major
version:
description: 'Explicit version (e.g. 2.9.0) — overrides bump type'
required: false
type: string

permissions:
contents: write
pull-requests: write

jobs:
release-pr:
name: Open version bump PR
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: 2.x
fetch-depth: 0
# Optional: set a RELEASE_TOKEN repo secret (fine-grained PAT with
# contents + pull-requests write) so the bump PR triggers CI checks.
# PRs created with the default github.token do not trigger workflows.
token: ${{ secrets.RELEASE_TOKEN || github.token }}

- name: Determine new version
id: version
env:
EXPLICIT_VERSION: ${{ inputs.version }}
BUMP: ${{ inputs.bump }}
run: |
current=$(sed -nE "s/^[[:space:]]*'version' => '([0-9]+\.[0-9]+\.[0-9]+)',/\1/p" config/app.php)
if [ -z "$current" ]; then
echo "::error::Could not read current version from config/app.php"
exit 1
fi
if [ -n "$EXPLICIT_VERSION" ]; then
new="$EXPLICIT_VERSION"
if ! echo "$new" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$'; then
echo "::error::Invalid version '$new' — expected X.Y.Z"
exit 1
fi
else
IFS=. read -r major minor patch <<< "$current"
case "$BUMP" in
major) new="$((major + 1)).0.0" ;;
minor) new="$major.$((minor + 1)).0" ;;
patch) new="$major.$minor.$((patch + 1))" ;;
esac
fi
if git rev-parse -q --verify "refs/tags/v$new" > /dev/null; then
echo "::error::Tag v$new already exists"
exit 1
fi
echo "Bumping $current -> $new"
echo "new=$new" >> "$GITHUB_OUTPUT"

- name: Push bump commit to release branch
env:
NEW_VERSION: ${{ steps.version.outputs.new }}
run: |
sed -i -E "s/^([[:space:]]*'version' => ')[0-9.]+(',)/\1$NEW_VERSION\2/" config/app.php
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git commit -am "Bump version to $NEW_VERSION"
git push --force origin "HEAD:refs/heads/release/v$NEW_VERSION"

- name: Open pull request
env:
GH_TOKEN: ${{ secrets.RELEASE_TOKEN || github.token }}
NEW_VERSION: ${{ steps.version.outputs.new }}
run: |
existing=$(gh pr list --head "release/v$NEW_VERSION" --base 2.x --state open --json number -q '.[0].number')
if [ -n "$existing" ]; then
echo "PR #$existing is already open for release/v$NEW_VERSION"
else
gh pr create \
--base 2.x \
--head "release/v$NEW_VERSION" \
--title "Bump version to $NEW_VERSION" \
--body "Automated version bump. Merging this PR will tag v$NEW_VERSION and publish the GitHub release. Merge it last, once everything for the release is on 2.x."
fi
41 changes: 41 additions & 0 deletions .github/workflows/tag-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Tag and release

# Stage 2 of the release flow: whenever the version in config/app.php changes
# on 2.x (normally by merging the PR opened by release.yml, but a hand-made
# bump PR works too), create the matching tag and GitHub release.
on:
push:
branches:
- 2.x
paths:
- config/app.php

permissions:
contents: write

jobs:
tag-release:
name: Tag and publish release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Create release if version is untagged
env:
GH_TOKEN: ${{ github.token }}
run: |
version=$(sed -nE "s/^[[:space:]]*'version' => '([0-9]+\.[0-9]+\.[0-9]+)',/\1/p" config/app.php)
if [ -z "$version" ]; then
echo "::error::Could not read version from config/app.php"
exit 1
fi
if git rev-parse -q --verify "refs/tags/v$version" > /dev/null; then
echo "Tag v$version already exists — nothing to do"
exit 0
fi
gh release create "v$version" \
--target "$GITHUB_SHA" \
--title "v$version" \
--generate-notes
26 changes: 26 additions & 0 deletions .github/workflows/tag-version-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Tag version check

# Safety net for manually pushed tags: fails if the tag doesn't match the
# version in config/app.php. Tags created by tag-release.yml use GITHUB_TOKEN
# and therefore don't trigger this (they always match anyway).
on:
push:
tags:
- 'v*'

jobs:
check:
name: Tag matches config/app.php
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Compare tag with app version
run: |
tag="${GITHUB_REF_NAME#v}"
version=$(sed -nE "s/^[[:space:]]*'version' => '([0-9]+\.[0-9]+\.[0-9]+)',/\1/p" config/app.php)
if [ "$tag" != "$version" ]; then
echo "::error::Tag v$tag does not match config/app.php version $version — bump the version (or use the Release workflow, which does it for you)"
exit 1
fi
echo "Tag v$tag matches config/app.php"
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
/public/hot
/public/storage
/storage/*.key
/storage/debugbar
/.idea
/.vagrant
Homestead.json
Expand All @@ -27,3 +28,5 @@ yarn-error.log
.VolumeIcon.icns
storage/app/public/avatars/*
.env
.phpunit.result.cache
/.phpunit.cache
Loading