Copy disabled (too large)
Download .txt
Showing preview only (31,362K chars total). Download the full file to get everything.
Repository: owlchester/kanka
Branch: develop
Commit: 6a00d9571154
Files: 6286
Total size: 28.5 MB
Directory structure:
gitextract_tqacef9c/
├── .claude/
│ ├── commands/
│ │ └── translate.md
│ └── skills/
│ ├── livewire-development/
│ │ └── SKILL.md
│ ├── pest-testing/
│ │ └── SKILL.md
│ └── tailwindcss-development/
│ └── SKILL.md
├── .dockerignore
├── .editorconfig
├── .gitattributes
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ └── feature_request.md
│ └── workflows/
│ ├── claude.yml
│ ├── lint.yml
│ └── phpstan.yml
├── .gitignore
├── .jshintrc
├── .mariadb/
│ ├── 10-create-logs-database.sh
│ └── conf.d/
│ └── kanka.cnf
├── .mcp.json
├── .nginx/
│ └── thumbor.conf
├── .phpactor.json
├── CLAUDE.md
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── app/
│ ├── Auth/
│ │ └── PassportTokenGuard.php
│ ├── Console/
│ │ ├── Commands/
│ │ │ ├── Campaigns/
│ │ │ │ ├── CleanupCommand.php
│ │ │ │ ├── DeleteCommand.php
│ │ │ │ ├── DummyEntities.php
│ │ │ │ ├── ExportCommand.php
│ │ │ │ ├── ImportCommand.php
│ │ │ │ ├── PermissionsSyncCommand.php
│ │ │ │ ├── PopulateCommand.php
│ │ │ │ └── VisibileEntityCountCommand.php
│ │ │ ├── Cleanup/
│ │ │ │ ├── AnonymiseUserLogs.php
│ │ │ │ ├── CleanupEntityLogs.php
│ │ │ │ ├── CleanupImages.php
│ │ │ │ ├── CleanupTrashed.php
│ │ │ │ ├── CleanupTrashedCampaigns.php
│ │ │ │ └── CleanupUsers.php
│ │ │ ├── Entities/
│ │ │ │ ├── CalendarAdvancer.php
│ │ │ │ ├── ChildlessEntities.php
│ │ │ │ └── MapChunk.php
│ │ │ ├── InstallCommand.php
│ │ │ ├── Metrics/
│ │ │ │ └── MetricsGa4.php
│ │ │ ├── Migrations/
│ │ │ │ ├── BookmarkEntityType.php
│ │ │ │ ├── Cdn.php
│ │ │ │ ├── MigrateEntityStatuses.php
│ │ │ │ ├── MigrateStatusFilters.php
│ │ │ │ ├── MigrateSubMentions.php
│ │ │ │ └── NewsletterSubCommand.php
│ │ │ ├── Report/
│ │ │ │ ├── Accounts.php
│ │ │ │ ├── Churn.php
│ │ │ │ ├── Onboarding.php
│ │ │ │ └── Weekly.php
│ │ │ ├── SetupMeilisearch.php
│ │ │ ├── SubscriptionEndPaypalFix.php
│ │ │ ├── Subscriptions/
│ │ │ │ ├── EndFreeTrials.php
│ │ │ │ ├── EndSubscriptions.php
│ │ │ │ ├── ExpiringCardCommand.php
│ │ │ │ ├── PaypalExpiringCommand.php
│ │ │ │ └── SubCleanupCommand.php
│ │ │ ├── Tests/
│ │ │ │ ├── Mailerlite.php
│ │ │ │ ├── SendNotification.php
│ │ │ │ ├── SignImageCommand.php
│ │ │ │ ├── TestEmail.php
│ │ │ │ └── TestWhiteboards.php
│ │ │ ├── Translations/
│ │ │ │ └── Missing.php
│ │ │ ├── Users/
│ │ │ │ ├── OfferFreeTrial.php
│ │ │ │ ├── RegenerateDiscordToken.php
│ │ │ │ ├── ResetUserPassword.php
│ │ │ │ └── SyncUserRoles.php
│ │ │ ├── VerifyParentIds.php
│ │ │ └── WordCount.php
│ │ └── Kernel.php
│ ├── Datagrids/
│ │ ├── Actions/
│ │ │ ├── BookmarkDatagridActions.php
│ │ │ ├── DatagridActions.php
│ │ │ ├── DefaultDatagridActions.php
│ │ │ ├── DeprecatedDatagridActions.php
│ │ │ ├── HistoryActions.php
│ │ │ ├── NoDatagridActions.php
│ │ │ └── RelationDatagridActions.php
│ │ ├── Bulks/
│ │ │ ├── AbilityBulk.php
│ │ │ ├── AttributeTemplateBulk.php
│ │ │ ├── BookmarkBulk.php
│ │ │ ├── Bulk.php
│ │ │ ├── CalendarBulk.php
│ │ │ ├── CharacterBulk.php
│ │ │ ├── ConversationBulk.php
│ │ │ ├── CreatureBulk.php
│ │ │ ├── DefaultBulk.php
│ │ │ ├── DiceRollBulk.php
│ │ │ ├── EntityBulk.php
│ │ │ ├── EventBulk.php
│ │ │ ├── FamilyBulk.php
│ │ │ ├── ItemBulk.php
│ │ │ ├── JournalBulk.php
│ │ │ ├── LocationBulk.php
│ │ │ ├── MapBulk.php
│ │ │ ├── NoteBulk.php
│ │ │ ├── OrganisationBulk.php
│ │ │ ├── QuestBulk.php
│ │ │ ├── RaceBulk.php
│ │ │ ├── RelationBulk.php
│ │ │ ├── TagBulk.php
│ │ │ └── TimelineBulk.php
│ │ ├── Datagrid.php
│ │ ├── Filters/
│ │ │ ├── AbilityFilter.php
│ │ │ ├── AttributeTemplateFilter.php
│ │ │ ├── CalendarFilter.php
│ │ │ ├── CharacterFilter.php
│ │ │ ├── ConversationFilter.php
│ │ │ ├── CreatureFilter.php
│ │ │ ├── CustomEntityFilter.php
│ │ │ ├── DatagridFilter.php
│ │ │ ├── DiceRollFilter.php
│ │ │ ├── EventFilter.php
│ │ │ ├── FamilyFilter.php
│ │ │ ├── HistoryFilter.php
│ │ │ ├── ItemFilter.php
│ │ │ ├── JournalFilter.php
│ │ │ ├── LocationFilter.php
│ │ │ ├── MapFilter.php
│ │ │ ├── NoteFilter.php
│ │ │ ├── OrganisationFilter.php
│ │ │ ├── QuestFilter.php
│ │ │ ├── RaceFilter.php
│ │ │ ├── RelationFilter.php
│ │ │ ├── TagFilter.php
│ │ │ ├── TimelineFilter.php
│ │ │ └── WhiteboardFilter.php
│ │ └── Sorters/
│ │ ├── DatagridSorter.php
│ │ └── QuestElementSorter.php
│ ├── Definitions/
│ │ ├── CustomCssDefinitions.php
│ │ └── CustomDefinitions.php
│ ├── Enums/
│ │ ├── AppReleaseCategory.php
│ │ ├── ApplicationStatus.php
│ │ ├── AttributeType.php
│ │ ├── CampaignExportStatus.php
│ │ ├── CampaignFilterType.php
│ │ ├── CampaignFlags.php
│ │ ├── CampaignImportStatus.php
│ │ ├── CampaignVisibility.php
│ │ ├── CharacterStatus.php
│ │ ├── ConversationTarget.php
│ │ ├── Descendants.php
│ │ ├── EntityAssetType.php
│ │ ├── EntityEventTypes.php
│ │ ├── FeatureStatus.php
│ │ ├── FilterOption.php
│ │ ├── MapMarkerShape.php
│ │ ├── OrganisationMemberPin.php
│ │ ├── OrganisationMemberStatus.php
│ │ ├── Permission.php
│ │ ├── PricingPeriod.php
│ │ ├── QuestStatus.php
│ │ ├── ReferralEventType.php
│ │ ├── SpotlightContentStatus.php
│ │ ├── SpotlightStatus.php
│ │ ├── Tier.php
│ │ ├── UserAction.php
│ │ ├── UserFlags.php
│ │ ├── Visibility.php
│ │ ├── WebhookAction.php
│ │ └── Widget.php
│ ├── Events/
│ │ ├── AdminInviteCreated.php
│ │ ├── Campaigns/
│ │ │ ├── Applications/
│ │ │ │ ├── Accepted.php
│ │ │ │ └── Rejected.php
│ │ │ ├── Dashboards/
│ │ │ │ ├── DashboardCreated.php
│ │ │ │ ├── DashboardDeleted.php
│ │ │ │ └── DashboardUpdated.php
│ │ │ ├── Deleted.php
│ │ │ ├── EntityTypes/
│ │ │ │ ├── EntityTypeCreated.php
│ │ │ │ ├── EntityTypeDeleted.php
│ │ │ │ ├── EntityTypeToggled.php
│ │ │ │ └── EntityTypeUpdated.php
│ │ │ ├── Exports/
│ │ │ │ └── ExportCreated.php
│ │ │ ├── Followers/
│ │ │ │ ├── FollowerCreated.php
│ │ │ │ └── FollowerRemoved.php
│ │ │ ├── Invites/
│ │ │ │ ├── InviteCreated.php
│ │ │ │ └── InviteDeleted.php
│ │ │ ├── Members/
│ │ │ │ ├── RoleUserAdded.php
│ │ │ │ ├── RoleUserRemoved.php
│ │ │ │ ├── Switched.php
│ │ │ │ ├── UserJoined.php
│ │ │ │ └── UserLeft.php
│ │ │ ├── Plugins/
│ │ │ │ ├── PluginDeleted.php
│ │ │ │ ├── PluginImported.php
│ │ │ │ └── PluginUpdated.php
│ │ │ ├── Roles/
│ │ │ │ ├── RoleCreated.php
│ │ │ │ ├── RoleDeleted.php
│ │ │ │ └── RoleUpdated.php
│ │ │ ├── Saved.php
│ │ │ ├── SettingsSaved.php
│ │ │ ├── Sidebar/
│ │ │ │ ├── SidebarReset.php
│ │ │ │ └── SidebarSaved.php
│ │ │ ├── Styles/
│ │ │ │ ├── StyleCreated.php
│ │ │ │ ├── StyleDeleted.php
│ │ │ │ └── StyleUpdated.php
│ │ │ ├── Thumbnails/
│ │ │ │ ├── ThumbnailCreated.php
│ │ │ │ ├── ThumbnailDeleted.php
│ │ │ │ └── ThumbnailsDeleted.php
│ │ │ ├── Updated.php
│ │ │ └── Webhooks/
│ │ │ ├── WebhookCreated.php
│ │ │ ├── WebhookDeleted.php
│ │ │ ├── WebhookTested.php
│ │ │ └── WebhookUpdated.php
│ │ ├── Entities/
│ │ │ └── EntityRestored.php
│ │ ├── FeatureCreated.php
│ │ ├── Posts/
│ │ │ ├── PostCreated.php
│ │ │ ├── PostDeleted.php
│ │ │ ├── PostRestored.php
│ │ │ └── PostUpdated.php
│ │ ├── SpotlightSubmitted.php
│ │ ├── Subscriptions/
│ │ │ ├── AutoRemove.php
│ │ │ ├── Boost.php
│ │ │ ├── Disable.php
│ │ │ ├── Premium.php
│ │ │ ├── SuperBoost.php
│ │ │ └── Upgrade.php
│ │ ├── Users/
│ │ │ └── EmailChanged.php
│ │ ├── WhiteboardUpdated.php
│ │ └── Whiteboards/
│ │ └── Updated.php
│ ├── Exceptions/
│ │ ├── Campaign/
│ │ │ ├── AlreadyBoostedException.php
│ │ │ ├── ExhaustedBoostsException.php
│ │ │ ├── ExhaustedSuperboostsException.php
│ │ │ └── ImportException.php
│ │ ├── Handler.php
│ │ ├── OpenAiException.php
│ │ ├── RequireLoginException.php
│ │ └── TranslatableException.php
│ ├── Facades/
│ │ ├── AdCache.php
│ │ ├── ApiLog.php
│ │ ├── Attributes.php
│ │ ├── Avatar.php
│ │ ├── BookmarkCache.php
│ │ ├── Breadcrumb.php
│ │ ├── CampaignCache.php
│ │ ├── CampaignLocalization.php
│ │ ├── CharacterCache.php
│ │ ├── Dashboard.php
│ │ ├── DataLayer.php
│ │ ├── Datagrid.php
│ │ ├── Domain.php
│ │ ├── EntityAssetCache.php
│ │ ├── EntityCache.php
│ │ ├── EntityLogger.php
│ │ ├── EntityPermission.php
│ │ ├── FormCopy.php
│ │ ├── Identity.php
│ │ ├── Images.php
│ │ ├── Img.php
│ │ ├── ImportIdMapper.php
│ │ ├── Limit.php
│ │ ├── MapMarkerCache.php
│ │ ├── MarketplaceCache.php
│ │ ├── Mentions.php
│ │ ├── Module.php
│ │ ├── Permissions.php
│ │ ├── QuestCache.php
│ │ ├── ReleaseCache.php
│ │ ├── RolePermission.php
│ │ ├── SingleUserCache.php
│ │ ├── TimelineElementCache.php
│ │ ├── UserCache.php
│ │ └── UserPermission.php
│ ├── Http/
│ │ ├── Controllers/
│ │ │ ├── Abilities/
│ │ │ │ ├── AbilityController.php
│ │ │ │ └── EntityController.php
│ │ │ ├── Account/
│ │ │ │ ├── Billing/
│ │ │ │ │ └── InformationController.php
│ │ │ │ ├── DeleteController.php
│ │ │ │ ├── EmailController.php
│ │ │ │ ├── PasswordController.php
│ │ │ │ └── SocialController.php
│ │ │ ├── Api/
│ │ │ │ ├── Public/
│ │ │ │ │ ├── CampaignController.php
│ │ │ │ │ ├── HallOfFameController.php
│ │ │ │ │ ├── KbController.php
│ │ │ │ │ ├── ShowcaseController.php
│ │ │ │ │ └── VoteController.php
│ │ │ │ └── v1/
│ │ │ │ ├── AbilityApiController.php
│ │ │ │ ├── ApiController.php
│ │ │ │ ├── ApplicationApiController.php
│ │ │ │ ├── AttributeTemplateApiController.php
│ │ │ │ ├── BookmarkApiController.php
│ │ │ │ ├── CalendarApiController.php
│ │ │ │ ├── CalendarEventApiController.php
│ │ │ │ ├── CalendarWeatherApiController.php
│ │ │ │ ├── Calendars/
│ │ │ │ │ └── AdvancerApiController.php
│ │ │ │ ├── CampaignApiController.php
│ │ │ │ ├── CampaignDashboardWidgetApiController.php
│ │ │ │ ├── CampaignImageApiController.php
│ │ │ │ ├── CampaignRoleApiController.php
│ │ │ │ ├── CampaignStyleApiController.php
│ │ │ │ ├── Campaigns/
│ │ │ │ │ ├── CategoryStatusController.php
│ │ │ │ │ ├── EntityTypeApiController.php
│ │ │ │ │ └── UserApiController.php
│ │ │ │ ├── CharacterApiController.php
│ │ │ │ ├── ConversationApiController.php
│ │ │ │ ├── ConversationMessageApiController.php
│ │ │ │ ├── ConversationParticipantApiController.php
│ │ │ │ ├── CreatureApiController.php
│ │ │ │ ├── DefaultThumbnailApiController.php
│ │ │ │ ├── DiceRollApiController.php
│ │ │ │ ├── Entities/
│ │ │ │ │ ├── Attributes/
│ │ │ │ │ │ ├── PatchController.php
│ │ │ │ │ │ └── PutController.php
│ │ │ │ │ └── ReminderApiController.php
│ │ │ │ ├── EntityAbilityApiController.php
│ │ │ │ ├── EntityApiController.php
│ │ │ │ ├── EntityArchiveApiController.php
│ │ │ │ ├── EntityAssetApiController.php
│ │ │ │ ├── EntityAttributeApiController.php
│ │ │ │ ├── EntityImageApiController.php
│ │ │ │ ├── EntityInventoryApiController.php
│ │ │ │ ├── EntityMentionApiController.php
│ │ │ │ ├── EntityMoveApiController.php
│ │ │ │ ├── EntityPermissionApiController.php
│ │ │ │ ├── EntityRecoveryApiController.php
│ │ │ │ ├── EntityRelationApiController.php
│ │ │ │ ├── EntityTagApiController.php
│ │ │ │ ├── EntityTemplateApiController.php
│ │ │ │ ├── EntityTransformApiController.php
│ │ │ │ ├── EntityTypeApiController.php
│ │ │ │ ├── EventApiController.php
│ │ │ │ ├── FamilyApiController.php
│ │ │ │ ├── FamilyTreeApiController.php
│ │ │ │ ├── FilterApiController.php
│ │ │ │ ├── FullTextSearchApiController.php
│ │ │ │ ├── HealthController.php
│ │ │ │ ├── ItemApiController.php
│ │ │ │ ├── JournalApiController.php
│ │ │ │ ├── LocationApiController.php
│ │ │ │ ├── MapApiController.php
│ │ │ │ ├── MapGroupApiController.php
│ │ │ │ ├── MapLayerApiController.php
│ │ │ │ ├── MapMarkerApiController.php
│ │ │ │ ├── MiscApiController.php
│ │ │ │ ├── NoteApiController.php
│ │ │ │ ├── OrganisationApiController.php
│ │ │ │ ├── OrganisationMemberApiController.php
│ │ │ │ ├── PostApiController.php
│ │ │ │ ├── PostLayoutApiController.php
│ │ │ │ ├── PostRecoveryApiController.php
│ │ │ │ ├── ProfileApiController.php
│ │ │ │ ├── QuestApiController.php
│ │ │ │ ├── QuestElementApiController.php
│ │ │ │ ├── RaceApiController.php
│ │ │ │ ├── RecentEntityApiController.php
│ │ │ │ ├── RelationApiController.php
│ │ │ │ ├── ReminderApiController.php
│ │ │ │ ├── SearchApiController.php
│ │ │ │ ├── TagApiController.php
│ │ │ │ ├── TimelineApiController.php
│ │ │ │ ├── TimelineElementApiController.php
│ │ │ │ ├── TimelineEraApiController.php
│ │ │ │ └── VisibilityController.php
│ │ │ ├── Attributes/
│ │ │ │ └── ApiController.php
│ │ │ ├── Auth/
│ │ │ │ ├── AuthController.php
│ │ │ │ ├── ConfirmPasswordController.php
│ │ │ │ ├── ForgotPasswordController.php
│ │ │ │ ├── LoginController.php
│ │ │ │ ├── RegisterController.php
│ │ │ │ ├── ResetPasswordController.php
│ │ │ │ └── VerificationController.php
│ │ │ ├── Billing/
│ │ │ │ ├── HistoryController.php
│ │ │ │ └── PaymentMethodController.php
│ │ │ ├── Bookmarks/
│ │ │ │ ├── RandomController.php
│ │ │ │ └── ReorderController.php
│ │ │ ├── Bragi/
│ │ │ │ └── BragiController.php
│ │ │ ├── BulkController.php
│ │ │ ├── Bulks/
│ │ │ │ ├── BatchController.php
│ │ │ │ ├── CopyController.php
│ │ │ │ ├── DeleteController.php
│ │ │ │ ├── DeleteRelationController.php
│ │ │ │ ├── PermissionController.php
│ │ │ │ ├── PrintController.php
│ │ │ │ ├── TemplateController.php
│ │ │ │ └── TransformController.php
│ │ │ ├── Calendar/
│ │ │ │ └── CalendarWeatherController.php
│ │ │ ├── Calendars/
│ │ │ │ ├── Bulks/
│ │ │ │ │ └── EntityEventController.php
│ │ │ │ └── EventController.php
│ │ │ ├── Campaign/
│ │ │ │ ├── AchievementController.php
│ │ │ │ ├── ApplicationController.php
│ │ │ │ ├── ApplicationDashboardController.php
│ │ │ │ ├── ApplicationSetupController.php
│ │ │ │ ├── ApplyController.php
│ │ │ │ ├── CreateController.php
│ │ │ │ ├── CssController.php
│ │ │ │ ├── DashboardController.php
│ │ │ │ ├── DashboardHeaderController.php
│ │ │ │ ├── DashboardWidgetController.php
│ │ │ │ ├── DefaultImageController.php
│ │ │ │ ├── DefaultsController.php
│ │ │ │ ├── DeleteController.php
│ │ │ │ ├── EntityTypeController.php
│ │ │ │ ├── ExportController.php
│ │ │ │ ├── FollowController.php
│ │ │ │ ├── ImageController.php
│ │ │ │ ├── ImportController.php
│ │ │ │ ├── InviteController.php
│ │ │ │ ├── LeaveController.php
│ │ │ │ ├── LogController.php
│ │ │ │ ├── MemberController.php
│ │ │ │ ├── Members/
│ │ │ │ │ └── RoleController.php
│ │ │ │ ├── ModuleController.php
│ │ │ │ ├── PluginController.php
│ │ │ │ ├── Plugins/
│ │ │ │ │ ├── BulkController.php
│ │ │ │ │ ├── CssController.php
│ │ │ │ │ ├── ImportController.php
│ │ │ │ │ ├── ToggleController.php
│ │ │ │ │ └── UpdateController.php
│ │ │ │ ├── RecoveryController.php
│ │ │ │ ├── RoleController.php
│ │ │ │ ├── RoleUserController.php
│ │ │ │ ├── ShareController.php
│ │ │ │ ├── SidebarController.php
│ │ │ │ ├── StatController.php
│ │ │ │ ├── StyleController.php
│ │ │ │ ├── ThemeBuilderController.php
│ │ │ │ ├── UserController.php
│ │ │ │ ├── VanityController.php
│ │ │ │ ├── VisibilityController.php
│ │ │ │ ├── WebController.php
│ │ │ │ └── WebhookController.php
│ │ │ ├── CampaignBoostController.php
│ │ │ ├── Characters/
│ │ │ │ ├── Families/
│ │ │ │ │ └── ManagementController.php
│ │ │ │ ├── MemberController.php
│ │ │ │ ├── MembershipController.php
│ │ │ │ └── Races/
│ │ │ │ └── ManagementController.php
│ │ │ ├── ConfirmController.php
│ │ │ ├── Controller.php
│ │ │ ├── ConversationMessageController.php
│ │ │ ├── ConversationParticipantController.php
│ │ │ ├── CookieConsentController.php
│ │ │ ├── Creatures/
│ │ │ │ └── CreatureController.php
│ │ │ ├── Crud/
│ │ │ │ ├── AbilityController.php
│ │ │ │ ├── AttributeTemplateController.php
│ │ │ │ ├── BookmarkController.php
│ │ │ │ ├── CalendarController.php
│ │ │ │ ├── CampaignController.php
│ │ │ │ ├── CharacterController.php
│ │ │ │ ├── ConversationController.php
│ │ │ │ ├── CreatureController.php
│ │ │ │ ├── DiceRollController.php
│ │ │ │ ├── EventController.php
│ │ │ │ ├── FamilyController.php
│ │ │ │ ├── ItemController.php
│ │ │ │ ├── JournalController.php
│ │ │ │ ├── LocationController.php
│ │ │ │ ├── MapController.php
│ │ │ │ ├── NoteController.php
│ │ │ │ ├── OrganisationController.php
│ │ │ │ ├── QuestController.php
│ │ │ │ ├── RaceController.php
│ │ │ │ ├── TagController.php
│ │ │ │ └── TimelineController.php
│ │ │ ├── CrudController.php
│ │ │ ├── DashboardController.php
│ │ │ ├── Dashboards/
│ │ │ │ ├── GettingStartedController.php
│ │ │ │ └── SetupController.php
│ │ │ ├── Datagrid2/
│ │ │ │ └── BulkControllerTrait.php
│ │ │ ├── Datagrids/
│ │ │ │ └── SubscriptionController.php
│ │ │ ├── DiceRolls/
│ │ │ │ └── ResultsController.php
│ │ │ ├── EditingController.php
│ │ │ ├── Entities/
│ │ │ │ ├── Apis/
│ │ │ │ │ └── DocumentController.php
│ │ │ │ ├── ChildrenController.php
│ │ │ │ ├── CreateController.php
│ │ │ │ ├── DeleteController.php
│ │ │ │ ├── EditController.php
│ │ │ │ ├── IndexController.php
│ │ │ │ └── ListingPreferenceController.php
│ │ │ ├── Entity/
│ │ │ │ ├── Abilities/
│ │ │ │ │ ├── ApiController.php
│ │ │ │ │ ├── ChargeController.php
│ │ │ │ │ ├── ImportController.php
│ │ │ │ │ └── ReorderController.php
│ │ │ │ ├── AbilityController.php
│ │ │ │ ├── ArchiveController.php
│ │ │ │ ├── AssetController.php
│ │ │ │ ├── AttributeController.php
│ │ │ │ ├── AttributeTemplateController.php
│ │ │ │ ├── Attributes/
│ │ │ │ │ ├── ApiController.php
│ │ │ │ │ ├── LiveApiController.php
│ │ │ │ │ └── LiveController.php
│ │ │ │ ├── Connections/
│ │ │ │ │ ├── MapController.php
│ │ │ │ │ └── TableController.php
│ │ │ │ ├── CopyInventoryController.php
│ │ │ │ ├── EntryController.php
│ │ │ │ ├── ExportController.php
│ │ │ │ ├── GenerateInventoryController.php
│ │ │ │ ├── ImageController.php
│ │ │ │ ├── Inventory/
│ │ │ │ │ └── DetailController.php
│ │ │ │ ├── InventoryController.php
│ │ │ │ ├── InventorySectionController.php
│ │ │ │ ├── LogController.php
│ │ │ │ ├── MentionController.php
│ │ │ │ ├── MoveController.php
│ │ │ │ ├── PermissionController.php
│ │ │ │ ├── PostController.php
│ │ │ │ ├── Posts/
│ │ │ │ │ ├── LayoutController.php
│ │ │ │ │ ├── LogController.php
│ │ │ │ │ ├── MoveController.php
│ │ │ │ │ ├── TemplateController.php
│ │ │ │ │ └── VisibilityController.php
│ │ │ │ ├── PreviewController.php
│ │ │ │ ├── PrivacyController.php
│ │ │ │ ├── ProfileController.php
│ │ │ │ ├── RelationController.php
│ │ │ │ ├── ReminderController.php
│ │ │ │ ├── ShareController.php
│ │ │ │ ├── ShowController.php
│ │ │ │ ├── StoryController.php
│ │ │ │ ├── TagController.php
│ │ │ │ ├── TemplateController.php
│ │ │ │ ├── TooltipController.php
│ │ │ │ └── TransformController.php
│ │ │ ├── EntityCreatorController.php
│ │ │ ├── Events/
│ │ │ │ └── EventController.php
│ │ │ ├── Facebook/
│ │ │ │ └── DeletionController.php
│ │ │ ├── Families/
│ │ │ │ ├── FamilyController.php
│ │ │ │ ├── MemberController.php
│ │ │ │ ├── TreeController.php
│ │ │ │ └── Trees/
│ │ │ │ └── ApiController.php
│ │ │ ├── Filters/
│ │ │ │ ├── FormController.php
│ │ │ │ └── SaveController.php
│ │ │ ├── Front/
│ │ │ │ └── HelperController.php
│ │ │ ├── FrontendPrepareController.php
│ │ │ ├── Gallery/
│ │ │ │ ├── BrowseController.php
│ │ │ │ ├── CreateController.php
│ │ │ │ ├── DeleteController.php
│ │ │ │ ├── ImageController.php
│ │ │ │ ├── SearchController.php
│ │ │ │ ├── SetupController.php
│ │ │ │ ├── ShowController.php
│ │ │ │ ├── TiptapController.php
│ │ │ │ ├── UpdateController.php
│ │ │ │ ├── UploadController.php
│ │ │ │ └── VisibilityController.php
│ │ │ ├── GalleryController.php
│ │ │ ├── HealthController.php
│ │ │ ├── HistoryController.php
│ │ │ ├── HomeController.php
│ │ │ ├── InvitationController.php
│ │ │ ├── Items/
│ │ │ │ ├── EntityController.php
│ │ │ │ └── ItemController.php
│ │ │ ├── Journals/
│ │ │ │ └── JournalController.php
│ │ │ ├── Layout/
│ │ │ │ └── NavigationController.php
│ │ │ ├── Locations/
│ │ │ │ ├── CharacterController.php
│ │ │ │ ├── EventController.php
│ │ │ │ ├── LocationController.php
│ │ │ │ └── QuestController.php
│ │ │ ├── Maps/
│ │ │ │ ├── Bulks/
│ │ │ │ │ ├── GroupController.php
│ │ │ │ │ ├── LayerController.php
│ │ │ │ │ └── MarkerController.php
│ │ │ │ ├── ExploreController.php
│ │ │ │ ├── GroupController.php
│ │ │ │ ├── LayerController.php
│ │ │ │ ├── Layers/
│ │ │ │ │ └── MigrateController.php
│ │ │ │ ├── MapController.php
│ │ │ │ ├── MarkerController.php
│ │ │ │ ├── Markers/
│ │ │ │ │ ├── DetailController.php
│ │ │ │ │ └── MoveController.php
│ │ │ │ ├── PreviewController.php
│ │ │ │ └── Reorders/
│ │ │ │ ├── GroupController.php
│ │ │ │ └── LayerController.php
│ │ │ ├── Notes/
│ │ │ │ └── NoteController.php
│ │ │ ├── NotificationController.php
│ │ │ ├── Onboarding/
│ │ │ │ └── InitialController.php
│ │ │ ├── Organisation/
│ │ │ │ ├── MemberController.php
│ │ │ │ └── OrganisationController.php
│ │ │ ├── Passport/
│ │ │ │ └── ClientController.php
│ │ │ ├── PasswordSecurityController.php
│ │ │ ├── PayPalController.php
│ │ │ ├── PresetController.php
│ │ │ ├── Quests/
│ │ │ │ ├── ElementController.php
│ │ │ │ └── QuestController.php
│ │ │ ├── Races/
│ │ │ │ ├── MemberController.php
│ │ │ │ └── RaceController.php
│ │ │ ├── ReferralController.php
│ │ │ ├── RelationController.php
│ │ │ ├── ReminderUpdateController.php
│ │ │ ├── Roadmap/
│ │ │ │ ├── FeatureController.php
│ │ │ │ └── RoadmapController.php
│ │ │ ├── Search/
│ │ │ │ ├── AttributeController.php
│ │ │ │ ├── CalendarController.php
│ │ │ │ ├── CampaignController.php
│ │ │ │ ├── FullTextController.php
│ │ │ │ ├── GameSystemSearchController.php
│ │ │ │ ├── ImageController.php
│ │ │ │ ├── ListController.php
│ │ │ │ ├── LiveController.php
│ │ │ │ ├── MapGroupController.php
│ │ │ │ ├── MarkerController.php
│ │ │ │ ├── MentionController.php
│ │ │ │ ├── RecentController.php
│ │ │ │ └── TemplateController.php
│ │ │ ├── SearchController.php
│ │ │ ├── Settings/
│ │ │ │ ├── AccountController.php
│ │ │ │ ├── ApiController.php
│ │ │ │ ├── AppearanceController.php
│ │ │ │ ├── Apps/
│ │ │ │ │ └── DiscordController.php
│ │ │ │ ├── AppsController.php
│ │ │ │ ├── BoostController.php
│ │ │ │ ├── BragiController.php
│ │ │ │ ├── ClientController.php
│ │ │ │ ├── NewsletterApiController.php
│ │ │ │ ├── NewsletterController.php
│ │ │ │ ├── PatreonController.php
│ │ │ │ ├── PremiumController.php
│ │ │ │ ├── ProfileController.php
│ │ │ │ ├── ReferralController.php
│ │ │ │ ├── ReleaseController.php
│ │ │ │ ├── Subscription/
│ │ │ │ │ ├── CancellationController.php
│ │ │ │ │ ├── CancelledController.php
│ │ │ │ │ ├── FinishController.php
│ │ │ │ │ └── FreeTrialController.php
│ │ │ │ ├── SubscriptionApiController.php
│ │ │ │ ├── SubscriptionController.php
│ │ │ │ └── TutorialController.php
│ │ │ ├── SetupController.php
│ │ │ ├── Spotlights/
│ │ │ │ └── ApplicationController.php
│ │ │ ├── Subscription/
│ │ │ │ └── PayPal/
│ │ │ │ └── RenewalController.php
│ │ │ ├── Summernote/
│ │ │ │ └── GalleryController.php
│ │ │ ├── Tags/
│ │ │ │ ├── ChildController.php
│ │ │ │ ├── PostController.php
│ │ │ │ ├── TagController.php
│ │ │ │ └── TransferController.php
│ │ │ ├── Templates/
│ │ │ │ └── LoadController.php
│ │ │ ├── Timelines/
│ │ │ │ ├── TimelineController.php
│ │ │ │ ├── TimelineElementController.php
│ │ │ │ ├── TimelineEraController.php
│ │ │ │ └── TimelineReorderController.php
│ │ │ ├── TroubleshootingController.php
│ │ │ ├── User/
│ │ │ │ ├── EmailValidationController.php
│ │ │ │ └── ProfileController.php
│ │ │ ├── WebhookController.php
│ │ │ ├── Whiteboards/
│ │ │ │ ├── ApiController.php
│ │ │ │ ├── CrudController.php
│ │ │ │ └── DrawController.php
│ │ │ └── Widgets/
│ │ │ └── CalendarWidgetController.php
│ │ ├── Kernel.php
│ │ ├── Middleware/
│ │ │ ├── Adless.php
│ │ │ ├── ApiLogMiddleware.php
│ │ │ ├── CachedResponse.php
│ │ │ ├── Campaigns/
│ │ │ │ ├── Boosted.php
│ │ │ │ ├── Premium.php
│ │ │ │ └── Superboosted.php
│ │ │ ├── CheckIfUserBanned.php
│ │ │ ├── EncryptCookies.php
│ │ │ ├── HttpsProtocol.php
│ │ │ ├── Identity.php
│ │ │ ├── LastCampaign.php
│ │ │ ├── LocaleChange.php
│ │ │ ├── LocalizeDatetime.php
│ │ │ ├── LoginRedirect.php
│ │ │ ├── OTP.php
│ │ │ ├── PasswordConfirm.php
│ │ │ ├── RedirectIfAuthenticated.php
│ │ │ ├── ReplicationSwitcher.php
│ │ │ ├── Subscriptions.php
│ │ │ ├── Tracking.php
│ │ │ ├── Translator.php
│ │ │ ├── TrimStrings.php
│ │ │ ├── TrustProxies.php
│ │ │ └── VerifyCsrfToken.php
│ │ ├── Requests/
│ │ │ ├── API/
│ │ │ │ ├── PatchEntity.php
│ │ │ │ ├── StoreEntities.php
│ │ │ │ ├── StoreReminder.php
│ │ │ │ ├── UpdateUserRole.php
│ │ │ │ └── UploadEntityImage.php
│ │ │ ├── AddCalendarEvent.php
│ │ │ ├── AddCalendarWeather.php
│ │ │ ├── ApplyAttributeTemplate.php
│ │ │ ├── BragiRequest.php
│ │ │ ├── BulkRequest.php
│ │ │ ├── Bulks/
│ │ │ │ ├── Copy.php
│ │ │ │ ├── Template.php
│ │ │ │ └── Transform.php
│ │ │ ├── Campaigns/
│ │ │ │ ├── ApproveApplication.php
│ │ │ │ ├── DefaultImageDestroy.php
│ │ │ │ ├── DefaultImageStore.php
│ │ │ │ ├── DestroyDefaultThumbnail.php
│ │ │ │ ├── GalleryImageFolderStore.php
│ │ │ │ ├── GalleryImageStore.php
│ │ │ │ ├── GalleryImageUpdate.php
│ │ │ │ ├── PatchCampaignApplication.php
│ │ │ │ ├── RejectApplication.php
│ │ │ │ ├── StoreCampaignApplication.php
│ │ │ │ ├── StoreCampaignApplicationStatus.php
│ │ │ │ ├── StoreCampaignSetup.php
│ │ │ │ ├── StoreCampaignVisibility.php
│ │ │ │ ├── StoreDefaultThumbnail.php
│ │ │ │ ├── StoreDefaults.php
│ │ │ │ ├── StoreImage.php
│ │ │ │ ├── StoreTheme.php
│ │ │ │ └── Vanity.php
│ │ │ ├── CopyEntityToCampaignRequest.php
│ │ │ ├── CopyInventory.php
│ │ │ ├── DeleteCampaign.php
│ │ │ ├── DeleteEntityType.php
│ │ │ ├── DeleteSettingsAccount.php
│ │ │ ├── EditPostVisibility.php
│ │ │ ├── Entities/
│ │ │ │ └── UpdateListingPreferenceRequest.php
│ │ │ ├── FilterPublicCampaignRequest.php
│ │ │ ├── Front/
│ │ │ │ └── StoreCommunityEventEntry.php
│ │ │ ├── Gallery/
│ │ │ │ ├── CreateFolder.php
│ │ │ │ ├── DeleteImages.php
│ │ │ │ ├── MoveFiles.php
│ │ │ │ ├── UpdateFile.php
│ │ │ │ ├── UpdateFiles.php
│ │ │ │ ├── UpdateFocus.php
│ │ │ │ ├── UploadFile.php
│ │ │ │ ├── UploadFiles.php
│ │ │ │ └── UploadUrl.php
│ │ │ ├── GalleryBulkDelete.php
│ │ │ ├── GenerateInventory.php
│ │ │ ├── HistoryRequest.php
│ │ │ ├── ManageFamilies.php
│ │ │ ├── ManageRaces.php
│ │ │ ├── MoveEntity.php
│ │ │ ├── MoveEntityRequest.php
│ │ │ ├── MovePostRequest.php
│ │ │ ├── Onboarding/
│ │ │ │ └── InitialRequest.php
│ │ │ ├── PermissionTestRequest.php
│ │ │ ├── QuickCreator/
│ │ │ │ ├── StoreEntity.php
│ │ │ │ └── StorePost.php
│ │ │ ├── ReadBanner.php
│ │ │ ├── RecoverEntity.php
│ │ │ ├── RecoverPost.php
│ │ │ ├── RenameEntityFile.php
│ │ │ ├── ReorderAbility.php
│ │ │ ├── ReorderBookmarks.php
│ │ │ ├── ReorderGroups.php
│ │ │ ├── ReorderLayers.php
│ │ │ ├── ReorderStories.php
│ │ │ ├── ReorderStyles.php
│ │ │ ├── ReorderTimeline.php
│ │ │ ├── SaveAttributes.php
│ │ │ ├── SaveAttributesApi.php
│ │ │ ├── SaveUserHelp.php
│ │ │ ├── Search/
│ │ │ │ └── MentionRequest.php
│ │ │ ├── Settings/
│ │ │ │ ├── NewsletterStore.php
│ │ │ │ ├── StoreApiToken.php
│ │ │ │ ├── StoreClient.php
│ │ │ │ ├── UserAltSubscribeStore.php
│ │ │ │ ├── UserBillingStore.php
│ │ │ │ └── UserSubscribeStore.php
│ │ │ ├── Spotlights/
│ │ │ │ └── ApplyRequest.php
│ │ │ ├── StoreAbility.php
│ │ │ ├── StoreAbilityEntity.php
│ │ │ ├── StoreAttribute.php
│ │ │ ├── StoreAttributeTemplate.php
│ │ │ ├── StoreBillingSettings.php
│ │ │ ├── StoreBookmark.php
│ │ │ ├── StoreCalendar.php
│ │ │ ├── StoreCampaign.php
│ │ │ ├── StoreCampaignDashboard.php
│ │ │ ├── StoreCampaignDashboardWidget.php
│ │ │ ├── StoreCampaignInvite.php
│ │ │ ├── StoreCampaignRole.php
│ │ │ ├── StoreCampaignRoleUser.php
│ │ │ ├── StoreCampaignStyle.php
│ │ │ ├── StoreCampaignTheme.php
│ │ │ ├── StoreCampaignUser.php
│ │ │ ├── StoreCharacter.php
│ │ │ ├── StoreCharacterFamily.php
│ │ │ ├── StoreCharacterOrganisation.php
│ │ │ ├── StoreCharacterRace.php
│ │ │ ├── StoreConversation.php
│ │ │ ├── StoreConversationMessage.php
│ │ │ ├── StoreConversationParticipant.php
│ │ │ ├── StoreCreature.php
│ │ │ ├── StoreCustomEntity.php
│ │ │ ├── StoreDiceRoll.php
│ │ │ ├── StoreEntityAbility.php
│ │ │ ├── StoreEntityAlias.php
│ │ │ ├── StoreEntityAsset.php
│ │ │ ├── StoreEntityAssets.php
│ │ │ ├── StoreEntityFile.php
│ │ │ ├── StoreEntityLink.php
│ │ │ ├── StoreEntityPermission.php
│ │ │ ├── StoreEntityTag.php
│ │ │ ├── StoreEntityType.php
│ │ │ ├── StoreEvent.php
│ │ │ ├── StoreFamily.php
│ │ │ ├── StoreFamilyTree.php
│ │ │ ├── StoreFeature.php
│ │ │ ├── StoreImageFocus.php
│ │ │ ├── StoreInventory.php
│ │ │ ├── StoreItem.php
│ │ │ ├── StoreJournal.php
│ │ │ ├── StoreLocation.php
│ │ │ ├── StoreMap.php
│ │ │ ├── StoreMapGroup.php
│ │ │ ├── StoreMapLayer.php
│ │ │ ├── StoreMapMarker.php
│ │ │ ├── StoreMarketplaceProfile.php
│ │ │ ├── StoreNote.php
│ │ │ ├── StoreOrganisation.php
│ │ │ ├── StoreOrganisationMember.php
│ │ │ ├── StoreOrganisationMembers.php
│ │ │ ├── StorePermission.php
│ │ │ ├── StorePost.php
│ │ │ ├── StorePreset.php
│ │ │ ├── StoreQuest.php
│ │ │ ├── StoreQuestElement.php
│ │ │ ├── StoreRace.php
│ │ │ ├── StoreRelation.php
│ │ │ ├── StoreSettingsAccount.php
│ │ │ ├── StoreSettingsAccountEmail.php
│ │ │ ├── StoreSettingsLayout.php
│ │ │ ├── StoreSettingsProfile.php
│ │ │ ├── StoreShare.php
│ │ │ ├── StoreTag.php
│ │ │ ├── StoreTagEntity.php
│ │ │ ├── StoreTimeline.php
│ │ │ ├── StoreTimelineElement.php
│ │ │ ├── StoreTimelineEra.php
│ │ │ ├── StoreWebhook.php
│ │ │ ├── StoreWhiteboard.php
│ │ │ ├── SubscriptionCancel.php
│ │ │ ├── TransferTag.php
│ │ │ ├── TransformEntity.php
│ │ │ ├── TransformEntityRequest.php
│ │ │ ├── Translation/
│ │ │ │ └── StoreFaqTranslationRequest.php
│ │ │ ├── UpdateAttribute.php
│ │ │ ├── UpdateCalendarEvent.php
│ │ │ ├── UpdateCampaign.php
│ │ │ ├── UpdateCampaignHeader.php
│ │ │ ├── UpdateEntityAbility.php
│ │ │ ├── UpdateEntityAttribute.php
│ │ │ ├── UpdateEntityEntry.php
│ │ │ ├── UpdateEntityFile.php
│ │ │ ├── UpdateEntityImage.php
│ │ │ ├── UpdateEntityTags.php
│ │ │ ├── UpdateInventory.php
│ │ │ ├── UpdateModuleName.php
│ │ │ ├── UpdateRelation.php
│ │ │ ├── UpdateUserRoles.php
│ │ │ ├── ValidateCoupon.php
│ │ │ ├── ValidatePledge.php
│ │ │ ├── ValidateReminderLength.php
│ │ │ └── Whiteboards/
│ │ │ ├── CreateRequest.php
│ │ │ ├── CreateStrokeRequest.php
│ │ │ ├── StoreShapeRequest.php
│ │ │ ├── UpdateRequest.php
│ │ │ └── UpdateShapeRequest.php
│ │ ├── Resources/
│ │ │ ├── AbilityResource.php
│ │ │ ├── Api/
│ │ │ │ ├── CategoryStatusResource.php
│ │ │ │ ├── DefaultEntityTypeResource.php
│ │ │ │ ├── EntityImagesResource.php
│ │ │ │ └── EntityTagResource.php
│ │ │ ├── ApiEntityTagResource.php
│ │ │ ├── ApiExclusion.php
│ │ │ ├── ApiSync.php
│ │ │ ├── ApplicationResource.php
│ │ │ ├── AttributeResource.php
│ │ │ ├── AttributeTemplateResource.php
│ │ │ ├── Attributes/
│ │ │ │ └── LiveAttributeResource.php
│ │ │ ├── BookmarkResource.php
│ │ │ ├── CalendarResource.php
│ │ │ ├── CalendarWeatherResource.php
│ │ │ ├── CampaignDashboardWidgetResource.php
│ │ │ ├── CampaignResource.php
│ │ │ ├── CampaignStyleResource.php
│ │ │ ├── CampaignUserResource.php
│ │ │ ├── CampaignUserRoleResource.php
│ │ │ ├── CategoryStatusResource.php
│ │ │ ├── CharacterOrganisationResource.php
│ │ │ ├── CharacterResource.php
│ │ │ ├── CharacterTraitResource.php
│ │ │ ├── Conversation/
│ │ │ │ ├── ConversationMessageResource.php
│ │ │ │ └── ConversationResource.php
│ │ │ ├── ConversationMessageResource.php
│ │ │ ├── ConversationParticipantResource.php
│ │ │ ├── ConversationResource.php
│ │ │ ├── CreatureResource.php
│ │ │ ├── DiceRollResource.php
│ │ │ ├── Entities/
│ │ │ │ ├── ExploreResource.php
│ │ │ │ └── TemplateResource.php
│ │ │ ├── Entity.php
│ │ │ ├── EntityAbilityResource.php
│ │ │ ├── EntityAssetResource.php
│ │ │ ├── EntityChild.php
│ │ │ ├── EntityDefaultThumbnailResource.php
│ │ │ ├── EntityMentionResource.php
│ │ │ ├── EntityPermissionResource.php
│ │ │ ├── EntityResource.php
│ │ │ ├── EntityTagResource.php
│ │ │ ├── EntityTypeResource.php
│ │ │ ├── EventResource.php
│ │ │ ├── FamilyResource.php
│ │ │ ├── FamilyTreeResource.php
│ │ │ ├── Gallery/
│ │ │ │ └── Tiptap/
│ │ │ │ └── ImageResource.php
│ │ │ ├── GalleryFile.php
│ │ │ ├── GalleryFileFull.php
│ │ │ ├── ImageResource.php
│ │ │ ├── InventoryResource.php
│ │ │ ├── ItemResource.php
│ │ │ ├── JournalResource.php
│ │ │ ├── KankaCollection.php
│ │ │ ├── LocationResource.php
│ │ │ ├── MapGroupResource.php
│ │ │ ├── MapLayerResource.php
│ │ │ ├── MapMarkerResource.php
│ │ │ ├── MapResource.php
│ │ │ ├── ModelResource.php
│ │ │ ├── NoteResource.php
│ │ │ ├── OrganisationMemberResource.php
│ │ │ ├── OrganisationResource.php
│ │ │ ├── PostLayoutResource.php
│ │ │ ├── PostPermissionResource.php
│ │ │ ├── PostResource.php
│ │ │ ├── ProfileResource.php
│ │ │ ├── Public/
│ │ │ │ └── CampaignResource.php
│ │ │ ├── QuestElementResource.php
│ │ │ ├── QuestResource.php
│ │ │ ├── RaceResource.php
│ │ │ ├── RelationResource.php
│ │ │ ├── ReminderResource.php
│ │ │ ├── TagResource.php
│ │ │ ├── TimelineElementResource.php
│ │ │ ├── TimelineEraResource.php
│ │ │ ├── TimelineResource.php
│ │ │ ├── UserResource.php
│ │ │ ├── VisibilityResource.php
│ │ │ ├── VoteResource.php
│ │ │ ├── Web/
│ │ │ │ └── EntityResource.php
│ │ │ └── Whiteboards/
│ │ │ ├── EntityResource.php
│ │ │ ├── ShapeResource.php
│ │ │ └── StrokeResource.php
│ │ └── Validators/
│ │ └── HashValidator.php
│ ├── Jobs/
│ │ ├── CalendarsClearElapsed.php
│ │ ├── CampaignRoleUserJob.php
│ │ ├── Campaigns/
│ │ │ ├── Delete.php
│ │ │ ├── Export.php
│ │ │ ├── Hide.php
│ │ │ ├── Import.php
│ │ │ ├── ImportCsv.php
│ │ │ ├── NotifyAdmins.php
│ │ │ └── Populate.php
│ │ ├── ChunkMapJob.php
│ │ ├── Copyright/
│ │ │ ├── DeleteCampaignImage.php
│ │ │ ├── DeleteEntityImage.php
│ │ │ └── DeleteUserImage.php
│ │ ├── DeletedCampaignCleanupJob.php
│ │ ├── Discord/
│ │ │ ├── AdminInviteJob.php
│ │ │ ├── ReportJob.php
│ │ │ ├── SendNewFeature.php
│ │ │ └── UpdateFeatureUpvotes.php
│ │ ├── DiscordRoleJob.php
│ │ ├── Emails/
│ │ │ ├── EmailChangeJob.php
│ │ │ ├── MailSettingsChangeJob.php
│ │ │ ├── Purge/
│ │ │ │ ├── FirstWarningJob.php
│ │ │ │ └── SecondWarningJob.php
│ │ │ ├── SubscriptionCancelEmailJob.php
│ │ │ ├── SubscriptionCreatedEmailJob.php
│ │ │ ├── SubscriptionDeletedEmailJob.php
│ │ │ ├── SubscriptionDowngradedEmailJob.php
│ │ │ ├── SubscriptionFailedEmailJob.php
│ │ │ ├── Subscriptions/
│ │ │ │ ├── Admin/
│ │ │ │ │ └── PaypalRenewedJob.php
│ │ │ │ ├── Converted.php
│ │ │ │ ├── EmailValidationJob.php
│ │ │ │ ├── ExpiringCardAlert.php
│ │ │ │ ├── PaypalExpiringAlert.php
│ │ │ │ ├── UpcomingYearlyAlert.php
│ │ │ │ └── WelcomeSubscriptionEmailJob.php
│ │ │ ├── TrialAcceptedEmailJob.php
│ │ │ └── WelcomeEmailJob.php
│ │ ├── EntityMappingJob.php
│ │ ├── EntityUpdatedJob.php
│ │ ├── EntityWebhookJob.php
│ │ ├── FileCleanup.php
│ │ ├── ResetCssCache.php
│ │ ├── Roadmap/
│ │ │ └── DiscordFeatureJob.php
│ │ ├── Spotlight/
│ │ │ └── DiscordSpotlightJob.php
│ │ ├── SubscriptionEndJob.php
│ │ ├── TestWebhookJob.php
│ │ └── Users/
│ │ ├── AbandonedCart.php
│ │ ├── DeleteUser.php
│ │ ├── NewPassword.php
│ │ ├── UnsubscribeUser.php
│ │ ├── UnsyncDiscord.php
│ │ └── UpdateEmail.php
│ ├── Listeners/
│ │ ├── Campaigns/
│ │ │ ├── Admins/
│ │ │ │ └── Notify.php
│ │ │ ├── Applications/
│ │ │ │ └── LogApplication.php
│ │ │ ├── Campaigns/
│ │ │ │ └── LogCampaign.php
│ │ │ ├── ClearCampaignCache.php
│ │ │ ├── ClearCampaignThemeCache.php
│ │ │ ├── ClearCampaignUsersSaved.php
│ │ │ ├── Dashboards/
│ │ │ │ └── LogDashboard.php
│ │ │ ├── EntityTypes/
│ │ │ │ └── LogEntityType.php
│ │ │ ├── Exports/
│ │ │ │ └── LogExport.php
│ │ │ ├── Invites/
│ │ │ │ └── LogInvite.php
│ │ │ ├── Members/
│ │ │ │ ├── LogMember.php
│ │ │ │ ├── LogUserRoleChanged.php
│ │ │ │ └── RunRoleUserJob.php
│ │ │ ├── Plugins/
│ │ │ │ ├── ClearThemeCache.php
│ │ │ │ └── LogPlugin.php
│ │ │ ├── Roles/
│ │ │ │ └── LogRole.php
│ │ │ ├── Sidebar/
│ │ │ │ └── LogSidebar.php
│ │ │ ├── Styles/
│ │ │ │ ├── ClearStylesCache.php
│ │ │ │ └── LogStyle.php
│ │ │ ├── Thumbnails/
│ │ │ │ ├── LogThumbnail.php
│ │ │ │ └── LogThumbnails.php
│ │ │ └── Webhooks/
│ │ │ └── LogWebhook.php
│ │ ├── Entities/
│ │ │ └── LogEntity.php
│ │ ├── Posts/
│ │ │ └── LogPost.php
│ │ ├── SendAdminInviteNotification.php
│ │ ├── SendFeatureNotification.php
│ │ ├── SendSpotlightNotification.php
│ │ ├── UserEventSubscriber.php
│ │ └── Users/
│ │ ├── ClearUserCache.php
│ │ ├── SendEmailUpdate.php
│ │ └── Subscriptions/
│ │ └── LogPremium.php
│ ├── Livewire/
│ │ ├── Campaigns/
│ │ │ ├── CsvImport.php
│ │ │ ├── ExportsTable.php
│ │ │ └── Tags.php
│ │ ├── EntityListing.php
│ │ ├── Roadmap/
│ │ │ ├── Form.php
│ │ │ ├── Ideas.php
│ │ │ └── Upvote.php
│ │ ├── Roadmap.php
│ │ ├── Users/
│ │ │ └── Otp.php
│ │ └── Widgets/
│ │ ├── GalleryCarousel.php
│ │ └── RandomEntity.php
│ ├── Mail/
│ │ ├── Admin/
│ │ │ └── Subscriptions/
│ │ │ └── ConvertedMail.php
│ │ ├── Purge/
│ │ │ ├── FirstWarning.php
│ │ │ └── SecondWarning.php
│ │ ├── Subscription/
│ │ │ ├── Admin/
│ │ │ │ ├── CancelledSubscriptionMail.php
│ │ │ │ ├── DowngradedSubscriptionMail.php
│ │ │ │ ├── NewSubscriptionMail.php
│ │ │ │ ├── NewTrialAcceptedMail.php
│ │ │ │ └── PaypalRenewedMail.php
│ │ │ └── User/
│ │ │ ├── CancelledUserSubscriptionMail.php
│ │ │ ├── EmailChangeMail.php
│ │ │ ├── ExpiringCardEmail.php
│ │ │ ├── FailedUserSubscriptionMail.php
│ │ │ ├── NewElementalSubscriptionMail.php
│ │ │ ├── NewSubscriberMail.php
│ │ │ ├── PaypalExpiringMail.php
│ │ │ ├── UpcomingYearlyEmail.php
│ │ │ └── ValidationEmail.php
│ │ ├── Users/
│ │ │ └── NewPassword.php
│ │ └── WelcomeEmail.php
│ ├── Models/
│ │ ├── Ability.php
│ │ ├── Ad.php
│ │ ├── AdminInvite.php
│ │ ├── ApiLog.php
│ │ ├── AppRelease.php
│ │ ├── Application.php
│ │ ├── Attribute.php
│ │ ├── AttributeTemplate.php
│ │ ├── Bookmark.php
│ │ ├── BragiLog.php
│ │ ├── Calendar.php
│ │ ├── CalendarWeather.php
│ │ ├── Campaign.php
│ │ ├── CampaignBoost.php
│ │ ├── CampaignDashboard.php
│ │ ├── CampaignDashboardRole.php
│ │ ├── CampaignDashboardWidget.php
│ │ ├── CampaignDashboardWidgetTag.php
│ │ ├── CampaignDescription.php
│ │ ├── CampaignEvent.php
│ │ ├── CampaignExport.php
│ │ ├── CampaignFilter.php
│ │ ├── CampaignFlag.php
│ │ ├── CampaignFollower.php
│ │ ├── CampaignGenre.php
│ │ ├── CampaignImport.php
│ │ ├── CampaignInvite.php
│ │ ├── CampaignPermission.php
│ │ ├── CampaignPlugin.php
│ │ ├── CampaignRole.php
│ │ ├── CampaignRoleUser.php
│ │ ├── CampaignSetting.php
│ │ ├── CampaignStyle.php
│ │ ├── CampaignSystem.php
│ │ ├── CampaignUser.php
│ │ ├── CategoryStatus.php
│ │ ├── Character.php
│ │ ├── CharacterFamily.php
│ │ ├── CharacterOrganisation.php
│ │ ├── CharacterRace.php
│ │ ├── CharacterTrait.php
│ │ ├── CommunityEvent.php
│ │ ├── CommunityEventEntry.php
│ │ ├── CommunityVote.php
│ │ ├── CommunityVoteBallot.php
│ │ ├── Concerns/
│ │ │ ├── Acl.php
│ │ │ ├── Blameable.php
│ │ │ ├── Boosted.php
│ │ │ ├── CampaignLimit.php
│ │ │ ├── CompositeKey.php
│ │ │ ├── Copiable.php
│ │ │ ├── EntityAsset.php
│ │ │ ├── EntityLogs.php
│ │ │ ├── EntityType.php
│ │ │ ├── HasCampaign.php
│ │ │ ├── HasEntity.php
│ │ │ ├── HasEntry.php
│ │ │ ├── HasFilters.php
│ │ │ ├── HasImage.php
│ │ │ ├── HasLocation.php
│ │ │ ├── HasLocations.php
│ │ │ ├── HasMentions.php
│ │ │ ├── HasReminder.php
│ │ │ ├── HasSlug.php
│ │ │ ├── HasSuggestions.php
│ │ │ ├── HasUser.php
│ │ │ ├── HasVisibility.php
│ │ │ ├── LastSync.php
│ │ │ ├── Orderable.php
│ │ │ ├── Paginatable.php
│ │ │ ├── Privatable.php
│ │ │ ├── Purifiable.php
│ │ │ ├── Sanitizable.php
│ │ │ ├── Searchable.php
│ │ │ ├── SimpleSortableTrait.php
│ │ │ ├── Sortable.php
│ │ │ ├── SortableTrait.php
│ │ │ ├── Taggable.php
│ │ │ ├── Templatable.php
│ │ │ ├── TouchSilently.php
│ │ │ ├── UserBoosters.php
│ │ │ └── UserTokens.php
│ │ ├── Conversation.php
│ │ ├── ConversationMessage.php
│ │ ├── ConversationParticipant.php
│ │ ├── Creature.php
│ │ ├── DiceRoll.php
│ │ ├── DiceRollResult.php
│ │ ├── Entity.php
│ │ ├── EntityAbility.php
│ │ ├── EntityAsset.php
│ │ ├── EntityEventType.php
│ │ ├── EntityListingPreference.php
│ │ ├── EntityLocation.php
│ │ ├── EntityLog.php
│ │ ├── EntityMention.php
│ │ ├── EntityTag.php
│ │ ├── EntityType.php
│ │ ├── EntityUser.php
│ │ ├── Event.php
│ │ ├── Family.php
│ │ ├── FamilyTree.php
│ │ ├── Faq.php
│ │ ├── FaqCategory.php
│ │ ├── FaqTranslation.php
│ │ ├── Feature.php
│ │ ├── FeatureCategory.php
│ │ ├── FeatureFile.php
│ │ ├── FeatureStatus.php
│ │ ├── FeatureUpvote.php
│ │ ├── FeatureVote.php
│ │ ├── GameSystem.php
│ │ ├── Genre.php
│ │ ├── Image.php
│ │ ├── ImageMention.php
│ │ ├── Inventory.php
│ │ ├── Item.php
│ │ ├── ItemCreator.php
│ │ ├── JobLog.php
│ │ ├── Journal.php
│ │ ├── Location.php
│ │ ├── Map.php
│ │ ├── MapGroup.php
│ │ ├── MapLayer.php
│ │ ├── MapMarker.php
│ │ ├── MiscModel.php
│ │ ├── Note.php
│ │ ├── Notification.php
│ │ ├── OTPAuthentication.php
│ │ ├── Organisation.php
│ │ ├── OrganisationMember.php
│ │ ├── PasswordSecurity.php
│ │ ├── Playstyle.php
│ │ ├── Pledge.php
│ │ ├── Plugin.php
│ │ ├── PluginType.php
│ │ ├── PluginVersion.php
│ │ ├── PluginVersionEntity.php
│ │ ├── Post.php
│ │ ├── PostLayout.php
│ │ ├── PostPermission.php
│ │ ├── PostTag.php
│ │ ├── Preset.php
│ │ ├── PresetType.php
│ │ ├── Quest.php
│ │ ├── QuestElement.php
│ │ ├── Race.php
│ │ ├── Referral.php
│ │ ├── ReferralEvent.php
│ │ ├── Relation.php
│ │ ├── Relations/
│ │ │ ├── CalendarRelations.php
│ │ │ ├── CampaignRelations.php
│ │ │ ├── EntityRelations.php
│ │ │ └── UserRelations.php
│ │ ├── Reminder.php
│ │ ├── Role.php
│ │ ├── Scopes/
│ │ │ ├── AclScope.php
│ │ │ ├── CalendarWeatherScopes.php
│ │ │ ├── CampaignScope.php
│ │ │ ├── CampaignScopes.php
│ │ │ ├── CommunityEventScopes.php
│ │ │ ├── CommunityVoteScopes.php
│ │ │ ├── EntityAssetScopes.php
│ │ │ ├── EntityEventScopes.php
│ │ │ ├── EntityScopes.php
│ │ │ ├── Pinnable.php
│ │ │ ├── PrivateScope.php
│ │ │ ├── SubEntityScopes.php
│ │ │ ├── TagScopes.php
│ │ │ ├── UserScope.php
│ │ │ └── VisibilityIDScope.php
│ │ ├── Spotlight.php
│ │ ├── SpotlightContent.php
│ │ ├── SubscriptionCancellation.php
│ │ ├── SubscriptionSource.php
│ │ ├── Tag.php
│ │ ├── Theme.php
│ │ ├── Tier.php
│ │ ├── TierPrice.php
│ │ ├── Timeline.php
│ │ ├── TimelineElement.php
│ │ ├── TimelineEra.php
│ │ ├── User.php
│ │ ├── UserApp.php
│ │ ├── UserFlag.php
│ │ ├── UserLog.php
│ │ ├── UserRole.php
│ │ ├── UserSetting.php
│ │ ├── UserValidation.php
│ │ ├── Users/
│ │ │ └── Tutorial.php
│ │ ├── Visibility.php
│ │ ├── Webhook.php
│ │ ├── Whiteboard.php
│ │ ├── WhiteboardShape.php
│ │ └── WhiteboardStroke.php
│ ├── Notifications/
│ │ └── Header.php
│ ├── Observers/
│ │ ├── AdminInviteObserver.php
│ │ ├── ApplicationObserver.php
│ │ ├── BlameableObserver.php
│ │ ├── BookmarkObserver.php
│ │ ├── CalendarObserver.php
│ │ ├── CampaignDashboardObserver.php
│ │ ├── CampaignDashboardRoleObserver.php
│ │ ├── CampaignDashboardWidgetObserver.php
│ │ ├── CampaignDescriptionObserver.php
│ │ ├── CampaignExportObserver.php
│ │ ├── CampaignFollowerObserver.php
│ │ ├── CampaignInviteObserver.php
│ │ ├── CampaignObserver.php
│ │ ├── CampaignPluginObserver.php
│ │ ├── CampaignRoleObserver.php
│ │ ├── CampaignRoleUserObserver.php
│ │ ├── CampaignSettingObserver.php
│ │ ├── CampaignStyleObserver.php
│ │ ├── CampaignUserObserver.php
│ │ ├── ChildEntityObserver.php
│ │ ├── Concerns/
│ │ │ └── HasMany.php
│ │ ├── ConversationMessageObserver.php
│ │ ├── ConversationObserver.php
│ │ ├── DiceRollObserver.php
│ │ ├── DiceRollResultObserver.php
│ │ ├── EntityAbilityObserver.php
│ │ ├── EntityAssetObserver.php
│ │ ├── EntityLogObserver.php
│ │ ├── EntityObserver.php
│ │ ├── EntityTypeObserver.php
│ │ ├── EntryObserver.php
│ │ ├── FamilyTreeObserver.php
│ │ ├── FeatureObserver.php
│ │ ├── ImageObserver.php
│ │ ├── ImageableObserver.php
│ │ ├── InventoryObserver.php
│ │ ├── MapGroupObserver.php
│ │ ├── MapLayerObserver.php
│ │ ├── MapMarkerObserver.php
│ │ ├── MapObserver.php
│ │ ├── OrganisationMemberObserver.php
│ │ ├── PostObserver.php
│ │ ├── PresetObserver.php
│ │ ├── PurifiableObserver.php
│ │ ├── PurifiableTrait.php
│ │ ├── QuestElementObserver.php
│ │ ├── Remindable.php
│ │ ├── ReminderObserver.php
│ │ ├── ReorderTrait.php
│ │ ├── SanitizedObserver.php
│ │ ├── SlugObserver.php
│ │ ├── SuggestionObserver.php
│ │ ├── TaggableObserver.php
│ │ ├── TimelineElementObserver.php
│ │ ├── TimelineEraObserver.php
│ │ ├── UserLogObserver.php
│ │ ├── UserObserver.php
│ │ ├── VisibilityObserver.php
│ │ ├── WebhookObserver.php
│ │ └── WhiteboardShapeObserver.php
│ ├── Policies/
│ │ ├── AbilityPolicy.php
│ │ ├── AttributeTemplatePolicy.php
│ │ ├── BookmarkPolicy.php
│ │ ├── CalendarPolicy.php
│ │ ├── CampaignBoostPolicy.php
│ │ ├── CampaignPluginPolicy.php
│ │ ├── CampaignPolicy.php
│ │ ├── CampaignRolePolicy.php
│ │ ├── CampaignRoleUserPolicy.php
│ │ ├── CampaignStylePolicy.php
│ │ ├── CampaignUserPolicy.php
│ │ ├── CharacterPolicy.php
│ │ ├── ClientPolicy.php
│ │ ├── CommunityEventEntryPolicy.php
│ │ ├── CommunityVotePolicy.php
│ │ ├── ConversationMessagePolicy.php
│ │ ├── ConversationPolicy.php
│ │ ├── CreaturePolicy.php
│ │ ├── DiceRollPolicy.php
│ │ ├── EntityPolicy.php
│ │ ├── EntityTypePolicy.php
│ │ ├── EventPolicy.php
│ │ ├── FamilyPolicy.php
│ │ ├── FeaturePolicy.php
│ │ ├── ImagePolicy.php
│ │ ├── ItemPolicy.php
│ │ ├── JournalPolicy.php
│ │ ├── LocationPolicy.php
│ │ ├── MapGroupPolicy.php
│ │ ├── MapLayerPolicy.php
│ │ ├── MapMarkerPolicy.php
│ │ ├── MapPolicy.php
│ │ ├── MiscPolicy.php
│ │ ├── NotePolicy.php
│ │ ├── OrganisationMemberPolicy.php
│ │ ├── OrganisationPolicy.php
│ │ ├── PluginPolicy.php
│ │ ├── PostPolicy.php
│ │ ├── QuestPolicy.php
│ │ ├── RacePolicy.php
│ │ ├── RelationPolicy.php
│ │ ├── ReminderPolicy.php
│ │ ├── TagPolicy.php
│ │ ├── TimelineEraPolicy.php
│ │ ├── TimelinePolicy.php
│ │ ├── TokenPolicy.php
│ │ ├── UserPolicy.php
│ │ ├── WebhookPolicy.php
│ │ └── WhiteboardPolicy.php
│ ├── Providers/
│ │ ├── AppServiceProvider.php
│ │ ├── AttributesServiceProvider.php
│ │ ├── AuthServiceProvider.php
│ │ ├── AvatarServiceProvider.php
│ │ ├── BreadcrumbServiceProvider.php
│ │ ├── BroadcastServiceProvider.php
│ │ ├── CacheServiceProvider.php
│ │ ├── CampaignLocalizationServiceProvider.php
│ │ ├── DashboardServiceProvider.php
│ │ ├── DatagridRendererProvider.php
│ │ ├── DatalayerServiceProvider.php
│ │ ├── DomainServiceProvider.php
│ │ ├── EntitySetupServiceProvider.php
│ │ ├── EventServiceProvider.php
│ │ ├── FormCopyServiceProvider.php
│ │ ├── IdentityServiceProvider.php
│ │ ├── ImgServiceProvider.php
│ │ ├── ImporterServiceProvider.php
│ │ ├── LimitServiceProvider.php
│ │ ├── Logs/
│ │ │ └── ApiLogServiceProvider.php
│ │ ├── MentionsServiceProvider.php
│ │ ├── ModuleServiceProvider.php
│ │ ├── PermissionsServiceProvider.php
│ │ └── RouteServiceProvider.php
│ ├── Renderers/
│ │ ├── CalendarRenderer.php
│ │ ├── CharacterSheets/
│ │ │ ├── Blade.php
│ │ │ ├── Custom.php
│ │ │ └── Renderer.php
│ │ ├── DatagridRenderer.php
│ │ ├── DatagridRenderer2.php
│ │ └── Layouts/
│ │ ├── Ability/
│ │ │ ├── Ability.php
│ │ │ └── Entity.php
│ │ ├── Calendar/
│ │ │ └── Reminder.php
│ │ ├── Campaign/
│ │ │ ├── CampaignImport.php
│ │ │ ├── CampaignRole.php
│ │ │ ├── CampaignUser.php
│ │ │ ├── Plugin.php
│ │ │ ├── PostRecovery.php
│ │ │ ├── Recovery.php
│ │ │ ├── Theme.php
│ │ │ └── Webhook.php
│ │ ├── Character/
│ │ │ └── Organisation.php
│ │ ├── Columns/
│ │ │ ├── Action.php
│ │ │ ├── Checkbox.php
│ │ │ ├── Column.php
│ │ │ └── Standard.php
│ │ ├── Creature/
│ │ │ └── Creature.php
│ │ ├── Entity/
│ │ │ ├── Children.php
│ │ │ ├── Relation.php
│ │ │ └── Reminder.php
│ │ ├── Event/
│ │ │ └── Event.php
│ │ ├── Family/
│ │ │ ├── Character.php
│ │ │ └── Family.php
│ │ ├── Header.php
│ │ ├── Item/
│ │ │ ├── Entity.php
│ │ │ └── Item.php
│ │ ├── Journal/
│ │ │ └── Journal.php
│ │ ├── Layout.php
│ │ ├── Location/
│ │ │ ├── Character.php
│ │ │ ├── Event.php
│ │ │ ├── Location.php
│ │ │ └── Quest.php
│ │ ├── Map/
│ │ │ ├── Group.php
│ │ │ ├── Layer.php
│ │ │ ├── Map.php
│ │ │ └── Marker.php
│ │ ├── Mention/
│ │ │ └── Mention.php
│ │ ├── Note/
│ │ │ └── Note.php
│ │ ├── Organisation/
│ │ │ ├── Member.php
│ │ │ └── Organisation.php
│ │ ├── Quest/
│ │ │ └── Quest.php
│ │ ├── Race/
│ │ │ ├── Character.php
│ │ │ └── Race.php
│ │ ├── Tag/
│ │ │ ├── Entity.php
│ │ │ ├── Post.php
│ │ │ └── Tag.php
│ │ └── Timeline/
│ │ ├── Era.php
│ │ └── Timeline.php
│ ├── Rules/
│ │ ├── AccountEmail.php
│ │ ├── AccountName.php
│ │ ├── ApiUniqueAttributeNames.php
│ │ ├── CalendarFormat.php
│ │ ├── CalendarMoonOffset.php
│ │ ├── CampaignDelete.php
│ │ ├── Confirm.php
│ │ ├── EntityField.php
│ │ ├── EntityFile.php
│ │ ├── EntityLink.php
│ │ ├── FontAwesomeIcon.php
│ │ ├── GallerySize.php
│ │ ├── GoodBye.php
│ │ ├── Lessless.php
│ │ ├── Location.php
│ │ ├── Nested.php
│ │ ├── Recaptcha.php
│ │ ├── SocialLogin.php
│ │ ├── UniqueAttributeNames.php
│ │ └── Vanity.php
│ ├── Sanitizers/
│ │ ├── CalendarSanitizer.php
│ │ ├── MiscSanitizer.php
│ │ └── SvgAllowedAttributes.php
│ ├── Services/
│ │ ├── Abilities/
│ │ │ ├── AbilityService.php
│ │ │ ├── BaseAbilityService.php
│ │ │ ├── ChargeService.php
│ │ │ ├── ImportService.php
│ │ │ └── ReorderService.php
│ │ ├── Account/
│ │ │ └── DeletionService.php
│ │ ├── Api/
│ │ │ ├── ApiPermissionService.php
│ │ │ ├── ApiService.php
│ │ │ ├── BulkAttributeService.php
│ │ │ ├── BulkEntityCreatorService.php
│ │ │ ├── CampaignService.php
│ │ │ ├── FilterService.php
│ │ │ ├── KbService.php
│ │ │ ├── ShowcaseService.php
│ │ │ └── VoteService.php
│ │ ├── AttributeMentionService.php
│ │ ├── AttributeService.php
│ │ ├── Attributes/
│ │ │ ├── ApiService.php
│ │ │ ├── BaseAttributesService.php
│ │ │ ├── RandomService.php
│ │ │ └── TemplateService.php
│ │ ├── Auth/
│ │ │ ├── LoginService.php
│ │ │ └── SessionService.php
│ │ ├── BookmarkService.php
│ │ ├── Bookmarks/
│ │ │ ├── RandomEntityService.php
│ │ │ └── RoutingService.php
│ │ ├── Bragi/
│ │ │ ├── BragiService.php
│ │ │ └── OpenAiService.php
│ │ ├── BreadcrumbService.php
│ │ ├── BulkService.php
│ │ ├── Caches/
│ │ │ ├── AdCacheService.php
│ │ │ ├── BaseCache.php
│ │ │ ├── BookmarkCacheService.php
│ │ │ ├── CampaignCacheService.php
│ │ │ ├── CharacterCacheService.php
│ │ │ ├── EntityAssetCacheService.php
│ │ │ ├── EntityCacheService.php
│ │ │ ├── MapMarkerCacheService.php
│ │ │ ├── MarketplaceCacheService.php
│ │ │ ├── QuestCacheService.php
│ │ │ ├── ReleaseCacheService.php
│ │ │ ├── SingleUserCacheService.php
│ │ │ ├── TimelineElementCacheService.php
│ │ │ ├── Traits/
│ │ │ │ ├── Campaign/
│ │ │ │ │ ├── ApplicationCache.php
│ │ │ │ │ ├── DashboardCache.php
│ │ │ │ │ ├── FlagCache.php
│ │ │ │ │ ├── MemberCache.php
│ │ │ │ │ ├── RoleCache.php
│ │ │ │ │ ├── SettingCache.php
│ │ │ │ │ ├── StyleCache.php
│ │ │ │ │ ├── ThemeCache.php
│ │ │ │ │ └── ThumbnailCache.php
│ │ │ │ ├── PrimaryCache.php
│ │ │ │ └── User/
│ │ │ │ ├── CampaignCache.php
│ │ │ │ ├── RoleCache.php
│ │ │ │ ├── TutorialCache.php
│ │ │ │ └── UserFlagCache.php
│ │ │ └── UserCacheService.php
│ │ ├── CalendarService.php
│ │ ├── Calendars/
│ │ │ ├── AdvancerService.php
│ │ │ ├── DaysService.php
│ │ │ ├── MoonService.php
│ │ │ ├── ReminderService.php
│ │ │ ├── SeasonService.php
│ │ │ └── WeatherService.php
│ │ ├── Campaign/
│ │ │ ├── AchievementService.php
│ │ │ ├── ApplicationService.php
│ │ │ ├── BoostService.php
│ │ │ ├── Connections/
│ │ │ │ └── WebService.php
│ │ │ ├── Counters/
│ │ │ │ └── VisibleEntityCountService.php
│ │ │ ├── CreateService.php
│ │ │ ├── DefaultImageService.php
│ │ │ ├── DeletionService.php
│ │ │ ├── ExportService.php
│ │ │ ├── Exports/
│ │ │ │ └── QueueService.php
│ │ │ ├── FollowService.php
│ │ │ ├── Gallery/
│ │ │ │ └── BulkService.php
│ │ │ ├── GenreService.php
│ │ │ ├── Import/
│ │ │ │ ├── ImportIdMapper.php
│ │ │ │ ├── ImportMentions.php
│ │ │ │ ├── ImportService.php
│ │ │ │ ├── Mappers/
│ │ │ │ │ ├── AbilityMapper.php
│ │ │ │ │ ├── BaseEntityMapper.php
│ │ │ │ │ ├── CalendarMapper.php
│ │ │ │ │ ├── CampaignMapper.php
│ │ │ │ │ ├── CharacterMapper.php
│ │ │ │ │ ├── CreatureMapper.php
│ │ │ │ │ ├── CustomEntityMapper.php
│ │ │ │ │ ├── CustomMapper.php
│ │ │ │ │ ├── EntityMapper.php
│ │ │ │ │ ├── EventMapper.php
│ │ │ │ │ ├── FamilyMapper.php
│ │ │ │ │ ├── GalleryMapper.php
│ │ │ │ │ ├── ImageMapper.php
│ │ │ │ │ ├── ImportMapper.php
│ │ │ │ │ ├── ItemMapper.php
│ │ │ │ │ ├── JournalMapper.php
│ │ │ │ │ ├── LocationMapper.php
│ │ │ │ │ ├── MapMapper.php
│ │ │ │ │ ├── MiscMapper.php
│ │ │ │ │ ├── NoteMapper.php
│ │ │ │ │ ├── OrganisationMapper.php
│ │ │ │ │ ├── QuestMapper.php
│ │ │ │ │ ├── RaceMapper.php
│ │ │ │ │ ├── TagMapper.php
│ │ │ │ │ └── TimelineMapper.php
│ │ │ │ └── PrepareService.php
│ │ │ ├── LeaveService.php
│ │ │ ├── LocalisationService.php
│ │ │ ├── MemberService.php
│ │ │ ├── ModuleEditService.php
│ │ │ ├── ModuleService.php
│ │ │ ├── NotificationService.php
│ │ │ ├── Notifications/
│ │ │ │ ├── HideService.php
│ │ │ │ └── ImageRemoveService.php
│ │ │ ├── PluginService.php
│ │ │ ├── PurgeService.php
│ │ │ ├── SearchCleanupService.php
│ │ │ ├── ShareService.php
│ │ │ ├── Sidebar/
│ │ │ │ ├── SaveService.php
│ │ │ │ └── SetupService.php
│ │ │ ├── StatService.php
│ │ │ ├── SystemService.php
│ │ │ ├── ThemeBuilderService.php
│ │ │ └── Webhooks/
│ │ │ └── SaveService.php
│ │ ├── ColourService.php
│ │ ├── CommunityVoteService.php
│ │ ├── CountryService.php
│ │ ├── CsvImportService.php
│ │ ├── CsvValidatorService.php
│ │ ├── DashboardService.php
│ │ ├── Dashboards/
│ │ │ └── GettingStartedService.php
│ │ ├── DiceRollerService.php
│ │ ├── Discord/
│ │ │ └── NotificationService.php
│ │ ├── DiscordService.php
│ │ ├── DomainService.php
│ │ ├── Entity/
│ │ │ ├── AliasService.php
│ │ │ ├── ArchiveService.php
│ │ │ ├── ColumnDefinitionService.php
│ │ │ ├── Connections/
│ │ │ │ ├── MapService.php
│ │ │ │ └── RelatedService.php
│ │ │ ├── CopyService.php
│ │ │ ├── EntitySaveService.php
│ │ │ ├── ExportService.php
│ │ │ ├── InventoryService.php
│ │ │ ├── LoggerService.php
│ │ │ ├── MarkdownExportService.php
│ │ │ ├── MoveService.php
│ │ │ ├── NewService.php
│ │ │ ├── PopularService.php
│ │ │ ├── PostLoggerService.php
│ │ │ ├── PostService.php
│ │ │ ├── PreviewService.php
│ │ │ ├── PrivacyService.php
│ │ │ ├── PurgeService.php
│ │ │ ├── RecoveryService.php
│ │ │ ├── RecoverySetupService.php
│ │ │ ├── RelationService.php
│ │ │ ├── Relations/
│ │ │ │ ├── CharacterRelationsService.php
│ │ │ │ ├── Concerns/
│ │ │ │ │ ├── SavesLocations.php
│ │ │ │ │ └── SupportsPatchMode.php
│ │ │ │ ├── CreatureRelationsService.php
│ │ │ │ ├── EntityRelationsServiceFactory.php
│ │ │ │ ├── EventRelationsService.php
│ │ │ │ ├── FamilyRelationsService.php
│ │ │ │ ├── ItemRelationsService.php
│ │ │ │ ├── LocationRelationsService.php
│ │ │ │ ├── OrganisationRelationsService.php
│ │ │ │ ├── RaceRelationsService.php
│ │ │ │ └── RelationsServiceInterface.php
│ │ │ ├── RemindableService.php
│ │ │ ├── ShareService.php
│ │ │ ├── StoryService.php
│ │ │ ├── TagService.php
│ │ │ ├── TemplateService.php
│ │ │ ├── TooltipService.php
│ │ │ └── TransformService.php
│ │ ├── EntityFileService.php
│ │ ├── EntityMappingService.php
│ │ ├── EntityTypeService.php
│ │ ├── Families/
│ │ │ └── FamilyTreeService.php
│ │ ├── FilterService.php
│ │ ├── FormCopyService.php
│ │ ├── Gallery/
│ │ │ ├── BrowseService.php
│ │ │ ├── CreateService.php
│ │ │ ├── DeleteService.php
│ │ │ ├── SelectionService.php
│ │ │ ├── SetupService.php
│ │ │ ├── StorageService.php
│ │ │ ├── SummernoteService.php
│ │ │ ├── TiptapService.php
│ │ │ ├── UpdateService.php
│ │ │ └── UploadService.php
│ │ ├── GenreService.php
│ │ ├── IdentityManager.php
│ │ ├── Images/
│ │ │ └── AvatarService.php
│ │ ├── ImagesService.php
│ │ ├── ImgService.php
│ │ ├── InviteService.php
│ │ ├── LanguageService.php
│ │ ├── Layout/
│ │ │ └── NavigationService.php
│ │ ├── LengthValidatorService.php
│ │ ├── LimitService.php
│ │ ├── Logs/
│ │ │ └── ApiLogService.php
│ │ ├── Maps/
│ │ │ ├── ChunkingService.php
│ │ │ └── MigrateLayerService.php
│ │ ├── MarkdownMentionsService.php
│ │ ├── Mentions/
│ │ │ └── SaveService.php
│ │ ├── MentionsService.php
│ │ ├── MultiEditingService.php
│ │ ├── NewsletterService.php
│ │ ├── Onboarding/
│ │ │ └── InitialService.php
│ │ ├── PaginationService.php
│ │ ├── PatreonService.php
│ │ ├── PayPalService.php
│ │ ├── PermissionService.php
│ │ ├── Permissions/
│ │ │ ├── BulkPermissionService.php
│ │ │ ├── EntityPermission.php
│ │ │ ├── PermissionService.php
│ │ │ ├── RolePermission.php
│ │ │ └── RolePermissionService.php
│ │ ├── Plugins/
│ │ │ └── ImporterService.php
│ │ ├── Posts/
│ │ │ ├── Permissions/
│ │ │ │ └── SavePermissionsService.php
│ │ │ ├── PurgeService.php
│ │ │ └── RecoveryService.php
│ │ ├── QuickCreator/
│ │ │ └── ProcessService.php
│ │ ├── Referrals/
│ │ │ ├── JoinService.php
│ │ │ └── ManagementService.php
│ │ ├── Report/
│ │ │ ├── AccountsReportService.php
│ │ │ ├── BaseReportService.php
│ │ │ ├── ChurnReportService.php
│ │ │ ├── OnboardingReportService.php
│ │ │ └── WeeklyReportService.php
│ │ ├── Search/
│ │ │ ├── AttributeSearchService.php
│ │ │ ├── CampaignSearchService.php
│ │ │ ├── EntitySearchService.php
│ │ │ ├── LiveSearchService.php
│ │ │ ├── MapGroupSearchService.php
│ │ │ ├── MentionService.php
│ │ │ ├── RecentService.php
│ │ │ └── TemplateSearchService.php
│ │ ├── SearchService.php
│ │ ├── Spotlights/
│ │ │ └── ApplyService.php
│ │ ├── StarterService.php
│ │ ├── Submenus/
│ │ │ ├── AbilitySubmenu.php
│ │ │ ├── BaseSubmenu.php
│ │ │ ├── CalendarSubmenu.php
│ │ │ ├── CharacterSubmenu.php
│ │ │ ├── CreatureSubmenu.php
│ │ │ ├── CustomSubmenu.php
│ │ │ ├── EntitySubmenu.php
│ │ │ ├── EventSubmenu.php
│ │ │ ├── FamilySubmenu.php
│ │ │ ├── ItemSubmenu.php
│ │ │ ├── JournalSubmenu.php
│ │ │ ├── LocationSubmenu.php
│ │ │ ├── MapSubmenu.php
│ │ │ ├── NoteSubmenu.php
│ │ │ ├── OrganisationSubmenu.php
│ │ │ ├── QuestSubmenu.php
│ │ │ ├── RaceSubmenu.php
│ │ │ ├── SubmenuService.php
│ │ │ ├── TagSubmenu.php
│ │ │ └── TimelineSubmenu.php
│ │ ├── Subscribers/
│ │ │ └── HallOfFameService.php
│ │ ├── Subscription/
│ │ │ ├── CancellationService.php
│ │ │ ├── CouponService.php
│ │ │ ├── FreeTrialEndService.php
│ │ │ ├── PayPalRenewalService.php
│ │ │ ├── PaymentMethodService.php
│ │ │ ├── SubscriptionEndService.php
│ │ │ └── TrialService.php
│ │ ├── SubscriptionService.php
│ │ ├── SubscriptionUpgradeService.php
│ │ ├── TOC/
│ │ │ └── TocSlugify.php
│ │ ├── TagService.php
│ │ ├── TimelineService.php
│ │ ├── Tracking/
│ │ │ └── DatalayerService.php
│ │ ├── TroubleshootingService.php
│ │ ├── TutorialService.php
│ │ ├── UserAuthenticatedService.php
│ │ ├── Users/
│ │ │ ├── CampaignService.php
│ │ │ ├── CleanupService.php
│ │ │ ├── CurrencyService.php
│ │ │ ├── EmailValidationService.php
│ │ │ ├── OfferTrialService.php
│ │ │ ├── PurgeService.php
│ │ │ └── UserLogService.php
│ │ ├── WebhookService.php
│ │ └── Whiteboards/
│ │ ├── ApiService.php
│ │ └── Shapes/
│ │ └── PersistanceService.php
│ ├── Support/
│ │ └── HtmlPurifier/
│ │ └── CalcStyleDefinition.php
│ ├── Traits/
│ │ ├── AdminPolicyTrait.php
│ │ ├── ApiRequest.php
│ │ ├── BulkControllerTrait.php
│ │ ├── CalendarAware.php
│ │ ├── CampaignAware.php
│ │ ├── Controllers/
│ │ │ ├── HasDatagrid.php
│ │ │ ├── HasNested.php
│ │ │ └── HasSubview.php
│ │ ├── CreatesEntityFromName.php
│ │ ├── EntityAware.php
│ │ ├── EntityTypeAware.php
│ │ ├── ExportableTrait.php
│ │ ├── GuestAuthTrait.php
│ │ ├── HasJobLog.php
│ │ ├── MentionTrait.php
│ │ ├── OrderableTrait.php
│ │ ├── PostAware.php
│ │ ├── RequestAware.php
│ │ ├── ResolvesNewForeignEntities.php
│ │ ├── RoleAware.php
│ │ ├── Search/
│ │ │ └── Orderable.php
│ │ └── UserAware.php
│ └── View/
│ └── Components/
│ ├── Ad.php
│ ├── Ads/
│ │ └── Native.php
│ ├── Alert.php
│ ├── Badge.php
│ ├── Box/
│ │ └── Footer.php
│ ├── Box.php
│ ├── Button/
│ │ └── DeleteConfirm.php
│ ├── Buttons/
│ │ ├── Colours.php
│ │ ├── Confirm.php
│ │ └── ConfirmDelete.php
│ ├── Campaigns/
│ │ └── ModuleBox.php
│ ├── CharacterSheet.php
│ ├── Checkbox.php
│ ├── Dashboards/
│ │ └── Widgets/
│ │ └── Selection.php
│ ├── Date.php
│ ├── Dialog/
│ │ ├── Article.php
│ │ ├── Close.php
│ │ ├── Footer.php
│ │ └── Header.php
│ ├── Dialog.php
│ ├── Dropdowns/
│ │ ├── Divider.php
│ │ ├── Item.php
│ │ └── Section.php
│ ├── Entities/
│ │ ├── Submenu.php
│ │ └── Thumbnail.php
│ ├── EntityLink.php
│ ├── FaqElement.php
│ ├── Form.php
│ ├── Forms/
│ │ ├── Field.php
│ │ ├── Foreign.php
│ │ ├── Select.php
│ │ ├── Tags.php
│ │ ├── VisibilityPicker.php
│ │ └── VisibilityPickerField.php
│ ├── Grid.php
│ ├── Helper.php
│ ├── Helpers/
│ │ └── Tooltip.php
│ ├── Hero.php
│ ├── Icon.php
│ ├── InfoBox.php
│ ├── LearnMore.php
│ ├── Lists/
│ │ └── EmptyState.php
│ ├── Menu/
│ │ └── Element.php
│ ├── Menu.php
│ ├── Posts/
│ │ └── Tags.php
│ ├── PremiumCta.php
│ ├── PremiumCtaFooter.php
│ ├── PremiumDialog.php
│ ├── Profile/
│ │ └── SocialLink.php
│ ├── Reorder/
│ │ └── Child.php
│ ├── Sidebar/
│ │ ├── Account.php
│ │ ├── Bookmark.php
│ │ ├── Campaign.php
│ │ ├── Element.php
│ │ ├── Profile.php
│ │ ├── Section.php
│ │ └── Settings.php
│ ├── Since.php
│ ├── Tab/
│ │ ├── Nav.php
│ │ └── Tab.php
│ ├── Tags/
│ │ └── Bubble.php
│ ├── Toggles/
│ │ └── FilterButton.php
│ ├── Tutorial.php
│ ├── Users/
│ │ ├── Avatar.php
│ │ └── Link.php
│ ├── Widgets/
│ │ ├── FilteredLink.php
│ │ ├── Forms/
│ │ │ └── Advanced.php
│ │ └── Previews/
│ │ ├── Body.php
│ │ └── Head.php
│ └── WordCount.php
├── artisan
├── boost.json
├── bootstrap/
│ ├── app.php
│ └── cache/
│ └── .gitignore
├── composer.json
├── config/
│ ├── ads.php
│ ├── app.php
│ ├── attribute-templates.php
│ ├── auth.php
│ ├── backup.php
│ ├── billing.php
│ ├── blameable.php
│ ├── bragi.php
│ ├── broadcasting.php
│ ├── cache.php
│ ├── cdn.php
│ ├── colours.php
│ ├── cors.php
│ ├── database.php
│ ├── debugbar.php
│ ├── discord.php
│ ├── domains.php
│ ├── dompdf.php
│ ├── entities.php
│ ├── filesystems.php
│ ├── fontawesome.php
│ ├── front.php
│ ├── google2fa.php
│ ├── ignition.php
│ ├── image.php
│ ├── imports.php
│ ├── laravel-translation-manager.php
│ ├── laravellocalization.php
│ ├── larecipe.php
│ ├── limits.php
│ ├── livewire.php
│ ├── logging.php
│ ├── mail.php
│ ├── mailerlite.php
│ ├── marketplace.php
│ ├── openai.php
│ ├── passport.php
│ ├── paypal.php
│ ├── purge.php
│ ├── purify.php
│ ├── queue.php
│ ├── reverb.php
│ ├── scout.php
│ ├── sentry.php
│ ├── services.php
│ ├── session.php
│ ├── subscription.php
│ ├── thumbor.php
│ ├── tracking.php
│ ├── trustedproxy.php
│ └── view.php
├── database/
│ ├── .gitignore
│ ├── factories/
│ │ ├── AbilityFactory.php
│ │ ├── AttributeFactory.php
│ │ ├── BookmarkFactory.php
│ │ ├── CalendarFactory.php
│ │ ├── CampaignDashboardWidgetFactory.php
│ │ ├── CampaignFactory.php
│ │ ├── CampaignStyleFactory.php
│ │ ├── CharacterFactory.php
│ │ ├── ConversationFactory.php
│ │ ├── ConversationMessageFactory.php
│ │ ├── ConversationParticipantFactory.php
│ │ ├── CreatureFactory.php
│ │ ├── DiceRollFactory.php
│ │ ├── EntityAbilityFactory.php
│ │ ├── EntityAssetFactory.php
│ │ ├── EntityTagFactory.php
│ │ ├── EventFactory.php
│ │ ├── FamilyFactory.php
│ │ ├── ImageFactory.php
│ │ ├── ItemFactory.php
│ │ ├── JournalFactory.php
│ │ ├── LocationFactory.php
│ │ ├── MapFactory.php
│ │ ├── MapGroupFactory.php
│ │ ├── MapLayerFactory.php
│ │ ├── MapMarkerFactory.php
│ │ ├── NoteFactory.php
│ │ ├── OrganisationFactory.php
│ │ ├── PostFactory.php
│ │ ├── PostTagFactory.php
│ │ ├── QuestElementFactory.php
│ │ ├── QuestFactory.php
│ │ ├── RaceFactory.php
│ │ ├── RelationFactory.php
│ │ ├── ReminderFactory.php
│ │ ├── TagFactory.php
│ │ ├── TimelineElementFactory.php
│ │ ├── TimelineEraFactory.php
│ │ ├── TimelineFactory.php
│ │ └── UserFactory.php
│ ├── migrations/
│ │ ├── .gitkeep
│ │ ├── 2014_04_02_193005_create_ltm_translations_table.php
│ │ ├── 2014_10_12_000000_create_users_table.php
│ │ ├── 2014_10_12_100000_create_password_resets_table.php
│ │ ├── 2016_01_01_000000_add_voyager_user_fields.php
│ │ ├── 2016_04_11_00352701_create_user_locales_table.php
│ │ ├── 2016_06_01_000001_create_oauth_auth_codes_table.php
│ │ ├── 2016_06_01_000002_create_oauth_access_tokens_table.php
│ │ ├── 2016_06_01_000003_create_oauth_refresh_tokens_table.php
│ │ ├── 2016_06_01_000004_create_oauth_clients_table.php
│ │ ├── 2016_06_01_000005_create_oauth_personal_access_clients_table.php
│ │ ├── 2016_10_21_190000_create_roles_table.php
│ │ ├── 2017_10_27_090105_create_campaign.php
│ │ ├── 2017_10_27_091125_create_characters.php
│ │ ├── 2017_10_27_091755_create_families.php
│ │ ├── 2017_10_27_102246_create_locations.php
│ │ ├── 2017_10_28_091521_update_character_with_location.php
│ │ ├── 2017_10_30_010000_create_real_visibilities_table.php
│ │ ├── 2017_10_30_010002_create_real_entities_table.php
│ │ ├── 2017_10_30_160256_create_journal_table.php
│ │ ├── 2017_10_30_160311_create_item_table.php
│ │ ├── 2017_10_30_162322_create_family_relations.php
│ │ ├── 2017_10_30_164537_add_character_family.php
│ │ ├── 2017_10_31_124138_update_user_and_campaign_link.php
│ │ ├── 2017_11_01_222903_create_organisation.php
│ │ ├── 2017_11_03_181958_create_notes.php
│ │ ├── 2017_11_12_195702_create_invite_tokens.php
│ │ ├── 2017_11_16_145219_create_events.php
│ │ ├── 2017_11_16_222319_create_campaign_settings.php
│ │ ├── 2017_11_22_111255_create_quests.php
│ │ ├── 2017_11_30_113216_create_relations_table.php
│ │ ├── 2018_01_25_112528_create_attributes_table.php
│ │ ├── 2018_02_14_102646_create_attribute_template.php
│ │ ├── 2018_03_02_163640_create_new_acl.php
│ │ ├── 2018_03_14_152413_create_notifications_table.php
│ │ ├── 2018_04_09_17054701_add_ui_settings_to_ltm_user_locales.php
│ │ ├── 2018_04_16_090159_create_calendar_table.php
│ │ ├── 2018_04_24_075544_create_entity_notes_table.php
│ │ ├── 2018_04_24_124131_create_character_traits_table.php
│ │ ├── 2018_04_24_193803_create_sections_table.php
│ │ ├── 2018_04_30_174331_create_entity_events.php
│ │ ├── 2018_05_19_091532_add_dice_rolls.php
│ │ ├── 2018_05_25_102446_update_campaign_invites.php
│ │ ├── 2018_05_25_113848_create_dice_roll_results.php
│ │ ├── 2018_05_31_121110_create_custom_menu_table.php
│ │ ├── 2018_07_17_131457_create_jobs_table.php
│ │ ├── 2018_08_15_083901_create_failed_jobs_table.php
│ │ ├── 2018_08_20_174638_create_conversations.php
│ │ ├── 2018_09_19_121625_add_calendar_date_to_quest_and_journal.php
│ │ ├── 2018_09_25_134530_create_race.php
│ │ ├── 2018_10_17_130533_create_entity_categories.php
│ │ ├── 2018_10_23_124704_create_entity_files.php
│ │ ├── 2018_11_28_125839_add_campaign_dashboard_calendar.php
│ │ ├── 2018_12_06_222045_add_campaign_permission_entity_id.php
│ │ ├── 2019_01_24_182847_create_entity_mentions.php
│ │ ├── 2019_02_22_083247_create_entity_log.php
│ │ ├── 2019_04_11_134145_create_entity_inventory.php
│ │ ├── 2019_05_03_000001_create_customer_columns.php
│ │ ├── 2019_05_03_000002_create_subscriptions_table.php
│ │ ├── 2019_05_03_000003_create_subscription_items_table.php
│ │ ├── 2019_05_10_072500_create_entities.php
│ │ ├── 2019_05_23_130252_update_attribute_templates_add_entity_type_id.php
│ │ ├── 2019_08_15_152154_create_campaign_follow.php
│ │ ├── 2019_10_02_131224_create_campaign_boosts.php
│ │ ├── 2019_10_02_191220_custom_patreon.php
│ │ ├── 2020_01_20_084615_create_calendar_weather.php
│ │ ├── 2020_03_05_174449_create_abilities_table.php
│ │ ├── 2020_03_05_221303_create_entity_abilities.php
│ │ ├── 2020_03_25_192753_add_soft_deletes.php
│ │ ├── 2020_04_10_121227_create_discord.php
│ │ ├── 2020_04_29_175303_subscription_bills.php
│ │ ├── 2020_05_08_065550_create_images.php
│ │ ├── 2020_05_10_122725_update_dashboard_widgets_add_tags.php
│ │ ├── 2020_06_02_103227_create_sessions_table.php
│ │ ├── 2020_06_06_084917_create_maps_table.php
│ │ ├── 2020_07_24_160310_add_map_groups.php
│ │ ├── 2020_08_02_125607_create_app_updates_table.php
│ │ ├── 2020_08_03_155441_create_timelines_table.php
│ │ ├── 2020_08_04_095517_create_timeline_elements.php
│ │ ├── 2020_08_10_172320_update_entity_events_add_type.php
│ │ ├── 2020_09_10_140424_add_entity_image_id.php
│ │ ├── 2020_09_22_115919_create_referral_table.php
│ │ ├── 2020_11_07_083605_create_campaign_dashboards.php
│ │ ├── 2020_11_07_095122_update_campaign_widgets_add_dashboard_id.php
│ │ ├── 2020_12_12_191426_create_entity_note_permissions.php
│ │ ├── 2021_01_03_231138_create_table_entity_links.php
│ │ ├── 2021_01_18_184615_create_campaign_gallery_folders.php
│ │ ├── 2021_01_29_003755_update_menu_links_dashboard_id.php
│ │ ├── 2021_01_30_233554_create_campaign_submissions.php
│ │ ├── 2021_04_07_230722_update_entities_add_marketplace_entity_uuid.php
│ │ ├── 2021_04_11_202656_update_relations_add_marketplace_uuid.php
│ │ ├── 2021_04_20_201015_create_quest_elements_table.php
│ │ ├── 2021_05_25_125309_update_maps_center_marker.php
│ │ ├── 2021_07_19_095244_update_entity_notes_marketplace_uuid.php
│ │ ├── 2021_09_24_175239_create_entity_user_table.php
│ │ ├── 2021_09_27_173618_create_campaign_styles_table.php
│ │ ├── 2021_10_19_151149_create_menu_link_tags_table.php
│ │ ├── 2021_11_19_031558_create_user_role_table.php
│ │ ├── 2021_11_19_034012_update_entities_add_type_id.php
│ │ ├── 2022_01_02_212212_add_character_race_table.php
│ │ ├── 2022_01_23_023952_create_entity_aliases_table.php
│ │ ├── 2022_03_07_224142_create_character_families_table.php
│ │ ├── 2022_04_27_194610_update_campaign_permissions_perf.php
│ │ ├── 2022_05_06_151813_update_users_add_card_expiration.php
│ │ ├── 2022_06_07_172445_update_maps_add_clustering_toggle.php
│ │ ├── 2022_06_23_154301_create_entity_assets_table.php
│ │ ├── 2022_08_23_005328_add_race_location_table.php
│ │ ├── 2022_09_02_191341_create_password_securities_table.php
│ │ ├── 2022_09_21_231900_refactor_user_patreon.php
│ │ ├── 2022_10_20_192238_create_creatures_table.php
│ │ ├── 2022_11_01_214611_update_entity_user_add_campaign_id_post_id_timeline_element_id_quest_element_id.php
│ │ ├── 2022_11_07_192125_update_entity_mentions_add_quest_element_id_timeline_element_id.php
│ │ ├── 2022_11_08_161937_create_presets_table.php
│ │ ├── 2022_12_08_155837_rename_entity_note_id_to_post_id.php
│ │ ├── 2023_01_04_213154_create_bragi_logs_table.php
│ │ ├── 2023_01_16_021352_create_family_tree_table.php
│ │ ├── 2023_01_19_154910_cleanup_user_date_format.php
│ │ ├── 2023_02_08_003255_update_entity_logs_add_post_id.php
│ │ ├── 2023_03_14_152925_update_subscriptions_rename_stripe_plan.php
│ │ ├── 2023_03_14_153209_update_subscription_items_rename_stripe_plan.php
│ │ ├── 2023_03_14_154115_update_users_rename_card_brand_card_last_four.php
│ │ ├── 2023_05_04_185755_update_gallery_woff2.php
│ │ ├── 2023_05_17_191929_update_images_add_focus_x_focus_y.php
│ │ ├── 2023_06_02_175012_create_image_mentions_table.php
│ │ ├── 2023_06_09_215007_update_campaign_style_add_theme.php
│ │ ├── 2023_06_10_220139_create_api_logs.php
│ │ ├── 2023_06_15_210220_create_user_logs_table.php
│ │ ├── 2023_06_21_221002_update_attributes_rename_is_star.php
│ │ ├── 2023_06_21_221208_update_relations_rename_is_star.php
│ │ ├── 2023_06_27_194149_create_genres_table.php
│ │ ├── 2023_06_27_195226_create_campaign_genre_table.php
│ │ ├── 2023_06_29_185027_create_user_flags_table.php
│ │ ├── 2023_07_13_164526_create_post_layouts_table.php
│ │ ├── 2023_07_13_172639_update_entity_notes_add_layout_id.php
│ │ ├── 2023_07_28_181821_update_calendars_add_format.php
│ │ ├── 2023_08_11_012819_reset_campaign_slug.php
│ │ ├── 2023_08_14_225219_add_new_slug.php
│ │ ├── 2023_08_16_170220_remove_campaign_export_path.php
│ │ ├── 2023_08_21_233952_create_tutorials_table.php
│ │ ├── 2023_08_30_170905_migrate_to_bookmarks.php
│ │ ├── 2023_09_12_200523_migrate_to_posts.php
│ │ ├── 2023_10_15_183420_add_image_to_entities.php
│ │ ├── 2023_10_16_202303_update_locations_rename_parent_location_id_location_id.php
│ │ ├── 2023_10_21_172645_update_entity_type_bookmark.php
│ │ ├── 2023_10_25_173253_create_campaign_exports_table.php
│ │ ├── 2023_10_28_210131_add_is_deleted_index.php
│ │ ├── 2023_11_05_174423_create_campaign_import_table.php
│ │ ├── 2023_11_07_034812_rollback_entities_deleted_index.php
│ │ ├── 2023_11_19_121322_update_campaign_exports_add_progress.php
│ │ ├── 2023_11_21_215234_update_calendars_add_show_birthdays.php
│ │ ├── 2023_11_28_121013_cleanup_entity_images.php
│ │ ├── 2023_11_28_215313_update_map_markers_add_is_popupless.php
│ │ ├── 2023_12_02_154727_remove_old_trees.php
│ │ ├── 2023_12_05_125348_create_tiers_table.php
│ │ ├── 2024_01_08_144309_create_features_table.php
│ │ ├── 2024_01_10_191244_create_game_systems_table.php
│ │ ├── 2024_01_10_191740_create_campaign_system_table.php
│ │ ├── 2024_01_11_150113_update_attributes.php
│ │ ├── 2024_01_19_024046_cleanup_reminders.php
│ │ ├── 2024_01_22_203110_create_user_validations_table.php
│ │ ├── 2024_01_25_192113_update_creatures_add_is_extinct.php
│ │ ├── 2024_01_26_194006_update_campaigns_add_is_discreet.php
│ │ ├── 2024_02_06_162941_create_feature_files.php
│ │ ├── 2024_02_27_095646_update_features_add_original.php
│ │ ├── 2024_03_07_010249_update_features_add_rejection.php
│ │ ├── 2024_03_27_173140_create_webhooks.php
│ │ ├── 2024_04_03_224729_create_webhook_tags_table.php
│ │ ├── 2024_04_15_220412_create_organisation_location_table.php
│ │ ├── 2024_04_23_062512_update_subscriptions_change_name_type.php
│ │ ├── 2024_04_24_193659_update_campaign_settings_add_assets.php
│ │ ├── 2024_05_02_162659_update_inventories_add_image_uuid.php
│ │ ├── 2024_05_28_202511_create_tier_pricing_table.php
│ │ ├── 2024_06_01_000001_create_oauth_device_codes_table.php
│ │ ├── 2024_06_04_202056_update_posts_add_deleted_at_deleted_by.php
│ │ ├── 2024_06_14_201056_update_campaigns_add_deleted_by_deleted_at.php
│ │ ├── 2024_06_22_004252_update_character_race_add_is_private.php
│ │ ├── 2024_07_02_172619_update_posts_add_is_template.php
│ │ ├── 2024_07_08_051702_update_webhooks_add_settings.php
│ │ ├── 2024_07_09_062122_update_character_family_add_is_private.php
│ │ ├── 2024_07_25_205325_update_map_layers_add_image_uuid.php
│ │ ├── 2024_07_26_160208_update_entity_assets_add_image_uuid.php
│ │ ├── 2024_07_31_215400_remove_unused_slug.php
│ │ ├── 2024_08_12_231117_update_locations_add_is_destroyed.php
│ │ ├── 2024_08_13_202759_update_creatures_add_is_dead.php
│ │ ├── 2024_08_14_145655_update_races_add_is_extinct.php
│ │ ├── 2024_08_14_164041_update_families_add_is_extinct.php
│ │ ├── 2024_08_27_175447_update_notifications_migrate_user_model.php
│ │ ├── 2025_01_09_180214_update_objects_add_weight.php
│ │ ├── 2025_01_10_175606_update_quests_add_location_id.php
│ │ ├── 2025_01_11_022946_update_modules_add_campaign_id.php
│ │ ├── 2025_01_13_064804_create_post_tag_table.php
│ │ ├── 2025_01_13_230814_update_entities_add_boilerplate.php
│ │ ├── 2025_01_14_144924_update_bookmarks_add_entity_type_id.php
│ │ ├── 2025_01_15_160953_migrate_entry_to_entities.php
│ │ ├── 2025_01_16_164318_add_dashboard_entity_type_id.php
│ │ ├── 2025_01_16_175851_migrate_widgets_to_entity_types.php
│ │ ├── 2025_01_17_161652_add_parent_to_entities.php
│ │ ├── 2025_01_27_142523_add_word_count.php
│ │ ├── 2025_02_21_204219_update_module_icon.php
│ │ ├── 2025_03_18_055651_update_features_add_message_id.php
│ │ ├── 2025_03_21_150239_rename_entity_events_to_reminders.php
│ │ ├── 2025_03_21_150723_update_entity_events_add_polymorphism.php
│ │ ├── 2025_03_21_151008_fill_entity_events.php
│ │ ├── 2025_03_21_153447_update_reminders_nullify_entity_id.php
│ │ ├── 2025_04_10_064831_update_attribute_templates_add_is_enabled.php
│ │ ├── 2025_04_21_170958_update_user_logs_add_campaign_id.php
│ │ ├── 2025_05_29_015926_update_bookmarks_add_created_by_updated_by.php
│ │ ├── 2025_05_29_161824_update_campaign_dashboard_widgets_add_created_by_updated_by.php
│ │ ├── 2025_05_29_162746_update_attributes_add_created_by_updated_by.php
│ │ ├── 2025_06_06_053052_update_reminders_remove_entity_id.php
│ │ ├── 2025_06_09_161939_cleanup_old_entry_and_type.php
│ │ ├── 2025_06_09_162836_cleanup_old_fields.php
│ │ ├── 2025_06_09_181415_rename_campaign_submissions_to_applications.php
│ │ ├── 2025_06_09_182950_cleanup_old_logs_tables.php
│ │ ├── 2025_06_16_145726_add_api_log_duration.php
│ │ ├── 2025_06_16_211604_drop_oauth_personal_access_clients.php
│ │ ├── 2025_06_24_124233_update_entity_logs_add_polymorphism.php
│ │ ├── 2025_06_24_124354_migrate_entity_logs.php
│ │ ├── 2025_06_24_124500_cleanup_entity_logs.php
│ │ ├── 2025_06_25_161814_create_campaign_flags_table.php
│ │ ├── 2025_07_03_215618_update_objects_add_creator_id.php
│ │ ├── 2025_07_03_222904_update_objects_migrate_character_id_to_creator_id.php
│ │ ├── 2025_08_14_185936_update_posts_remove_is_private.php
│ │ ├── 2025_09_04_194330_update_campaign_flags_add_value.php
│ │ ├── 2025_09_12_160608_create_whiteboards_table.php
│ │ ├── 2025_09_17_034429_update_user_flags_add_amount.php
│ │ ├── 2025_09_22_230759_update_campaign_imports_add_logs_errors.php
│ │ ├── 2025_09_29_173336_update_map_markers_add_css.php
│ │ ├── 2025_09_29_204049_update_entities_add_archived_at.php
│ │ ├── 2025_10_01_200028_update_map_groups_add_parent_id.php
│ │ ├── 2025_10_02_170514_update_campaign_settings_add_whiteboards.php
│ │ ├── 2025_11_04_205450_create_entity_locations2_table.php
│ │ ├── 2025_11_06_154720_update_entity_assets_add_updated_by.php
│ │ ├── 2025_11_19_155526_migrate_campaigns_discreet.php
│ │ ├── 2025_11_19_160105_remove_campaigns_is_discreet.php
│ │ ├── 2025_12_15_191556_add_dashboard_widget_index.php
│ │ ├── 2025_12_22_212249_migrate_character_locations_to_entity_locations.php
│ │ ├── 2026_01_14_161511_cleanup_old_referrals.php
│ │ ├── 2026_01_14_170634_create_referral_codes_table.php
│ │ ├── 2026_01_14_174144_create_referral_events_table.php
│ │ ├── 2026_01_14_174215_update_users_referred_by.php
│ │ ├── 2026_01_15_224615_create_whiteboard_shapes_table.php
│ │ ├── 2026_01_15_232603_create_whiteboard_strokes_table.php
│ │ ├── 2026_01_23_204425_create_spotlights_table.php
│ │ ├── 2026_01_23_205038_cleanup_old_spotlights.php
│ │ ├── 2026_01_23_211003_create_spotlight_survey_table.php
│ │ ├── 2026_01_30_100000_rename_description_to_entry_in_quest_elements_table.php
│ │ ├── 2026_02_03_221238_create_playstyles_table.php
│ │ ├── 2026_02_04_170050_migrate_organisation_locations_to_entity_locations.php
│ │ ├── 2026_02_04_170051_migrate_creature_locations_to_entity_locations.php
│ │ ├── 2026_02_04_170052_migrate_race_locations_to_entity_locations.php
│ │ ├── 2026_02_04_213616_create_campaign_filters_table.php
│ │ ├── 2026_02_05_074106_create_campaign_playstyle_table.php
│ │ ├── 2026_02_06_185348_update_entities_force_name.php
│ │ ├── 2026_02_06_190751_add_entity_id_index_to_entities.php
│ │ ├── 2026_02_06_190754_add_composite_index_to_entity_tags.php
│ │ ├── 2026_02_06_190757_add_deleted_at_index_to_soft_delete_tables.php
│ │ ├── 2026_02_07_072211_update_applications_add_new_fields.php
│ │ ├── 2026_02_11_162437_add_alias_config.php
│ │ ├── 2026_02_16_155432_create_campaign_events_table.php
│ │ ├── 2026_02_16_215608_update_entities_add_source.php
│ │ ├── 2026_02_16_232044_fix_users_referred_by_foreign_key.php
│ │ ├── 2026_02_23_193432_add_prioritised_to_campaigns.php
│ │ ├── 2026_03_03_225300_update_characters_is_dead_to_tinyinteger.php
│ │ ├── 2026_03_04_044125_update_quests_is_completed_to_tinyinteger.php
│ │ ├── 2026_03_05_184417_migrate_event_locations_to_entity_locations.php
│ │ ├── 2026_03_05_214251_update_characters_pinned_defaults.php
│ │ ├── 2026_03_06_140442_rename_characters_is_dead_to_status.php
│ │ ├── 2026_03_06_140443_rename_quests_is_completed_to_status.php
│ │ ├── 2026_03_09_224121_add_copy_entity_entry_to_quest_elements_table.php
│ │ ├── 2026_03_11_224335_add_icon_to_tags_table.php
│ │ ├── 2026_03_12_172704_add_title_to_locations_table.php
│ │ ├── 2026_03_16_170743_update_cancellations_add_secondary.php
│ │ ├── 2026_03_16_211952_create_entity_listing_preferences_table.php
│ │ ├── 2026_03_17_000001_migrate_parent_ids_to_entities.php
│ │ ├── 2026_03_17_000002_drop_parent_columns_from_child_tables.php
│ │ ├── 2026_03_17_092044_create_item_creator_table.php
│ │ ├── 2026_03_18_152531_add_per_page_to_entity_listing_preferences_table.php
│ │ ├── 2026_03_23_193613_convert_tag_colours_to_hex.php
│ │ ├── 2026_03_26_000001_create_category_statuses_table.php
│ │ ├── 2026_03_26_000002_add_status_id_to_entities_table.php
│ │ ├── 2026_04_03_164253_update_features_add_meta.php
│ │ ├── 2026_04_03_215445_create_campaign_descriptions_table.php
│ │ ├── 2026_05_08_181031_drop_old_status_columns.php
│ │ ├── 2026_05_08_181951_drop_audit_columns_from_creatures_races_whiteboards.php
│ │ ├── 2026_05_08_183610_drop_system_and_is_discreet_from_campaigns.php
│ │ ├── 2026_05_08_185251_drop_follower_from_campaigns.php
│ │ └── 2026_05_08_190847_drop_export_date_from_campaigns.php
│ └── seeders/
│ ├── CategoryStatusSeeder.php
│ ├── DatabaseSeeder.php
│ ├── EntityEventTypeSeeder.php
│ ├── EntityTypesTableSeeder.php
│ ├── FeatureCategorySeeder.php
│ ├── FeatureStatusSeeder.php
│ ├── GameSystemSeeder.php
│ ├── GenreTableSeeder.php
│ ├── PlaystyleSeeder.php
│ ├── PostLayoutTableSeeder.php
│ ├── PresetTypeTableSeeder.php
│ ├── RolesTableSeeder.php
│ ├── ThemesTableSeeder.php
│ ├── TierPricingSeeder.php
│ ├── TierSeeder.php
│ └── VisibilitiesTableSeeder.php
├── docker/
│ └── mysql/
│ └── create-testing-database.sh
├── docker-compose.yml
├── docs/
│ ├── api/
│ │ └── readme.md
│ ├── assets.md
│ ├── contributing.md
│ ├── debugging.md
│ ├── meilisearch.md
│ ├── running.md
│ ├── specs/
│ │ └── 2026-05-07-family-tree-cytoscape-redesign.md
│ ├── translating.md
│ ├── updating.md
│ └── websockets.md
├── lang/
│ ├── base/
│ │ ├── attributes/
│ │ │ └── .gitkeep
│ │ ├── calendars/
│ │ │ └── .gitkeep
│ │ ├── campaigns/
│ │ │ └── .gitkeep
│ │ ├── emails/
│ │ │ └── .gitkeep
│ │ ├── entities/
│ │ │ └── .gitkeep
│ │ ├── front/
│ │ │ └── .gitkeep
│ │ ├── maps/
│ │ │ └── .gitkeep
│ │ ├── readme.md
│ │ ├── settings/
│ │ │ └── .gitkeep
│ │ ├── subscriptions/
│ │ │ └── .gitkeep
│ │ ├── timelines/
│ │ │ └── .gitkeep
│ │ └── users/
│ │ └── .gitkeep
│ ├── de/
│ │ ├── abilities.php
│ │ ├── account/
│ │ │ └── social.php
│ │ ├── attribute_templates.php
│ │ ├── attributes/
│ │ │ └── templates.php
│ │ ├── auth.php
│ │ ├── banners.php
│ │ ├── billing/
│ │ │ ├── information.php
│ │ │ ├── invoices.php
│ │ │ ├── menu.php
│ │ │ └── payment_methods.php
│ │ ├── bookmarks.php
│ │ ├── bragi.php
│ │ ├── calendars/
│ │ │ └── weather.php
│ │ ├── calendars.php
│ │ ├── callouts.php
│ │ ├── campaigns/
│ │ │ ├── achievements.php
│ │ │ ├── applications.php
│ │ │ ├── builder.php
│ │ │ ├── dashboard-header.php
│ │ │ ├── default-images.php
│ │ │ ├── delete.php
│ │ │ ├── export.php
│ │ │ ├── gallery.php
│ │ │ ├── import.php
│ │ │ ├── invites.php
│ │ │ ├── limits.php
│ │ │ ├── members.php
│ │ │ ├── modules.php
│ │ │ ├── overview.php
│ │ │ ├── plugins.php
│ │ │ ├── public.php
│ │ │ ├── recovery.php
│ │ │ ├── roles.php
│ │ │ ├── sidebar.php
│ │ │ ├── stats.php
│ │ │ ├── styles.php
│ │ │ ├── vanity.php
│ │ │ └── webhooks.php
│ │ ├── campaigns.php
│ │ ├── characters.php
│ │ ├── colours.php
│ │ ├── concept.php
│ │ ├── confirm/
│ │ │ └── editing.php
│ │ ├── confirm.php
│ │ ├── conversations.php
│ │ ├── cookieconsent.php
│ │ ├── creatures.php
│ │ ├── crud.php
│ │ ├── dashboard.php
│ │ ├── dashboards/
│ │ │ ├── setup.php
│ │ │ └── widgets/
│ │ │ ├── calendar.php
│ │ │ ├── campaign.php
│ │ │ ├── header.php
│ │ │ ├── help.php
│ │ │ ├── preview.php
│ │ │ ├── random.php
│ │ │ ├── recent.php
│ │ │ └── welcome.php
│ │ ├── datagrids.php
│ │ ├── datetime.php
│ │ ├── default.php
│ │ ├── dice_roll_results.php
│ │ ├── dice_rolls.php
│ │ ├── emails/
│ │ │ ├── activity/
│ │ │ │ ├── email.php
│ │ │ │ └── password.php
│ │ │ ├── purge/
│ │ │ │ ├── first.php
│ │ │ │ └── second.php
│ │ │ ├── subscriptions/
│ │ │ │ ├── expiring.php
│ │ │ │ ├── upcoming.php
│ │ │ │ └── validation.php
│ │ │ ├── validation.php
│ │ │ ├── welcome/
│ │ │ │ └── 2024.php
│ │ │ └── welcome.php
│ │ ├── entities/
│ │ │ ├── abilities.php
│ │ │ ├── actions.php
│ │ │ ├── aliases.php
│ │ │ ├── assets.php
│ │ │ ├── attributes.php
│ │ │ ├── children.php
│ │ │ ├── events.php
│ │ │ ├── files.php
│ │ │ ├── image.php
│ │ │ ├── inventories.php
│ │ │ ├── links.php
│ │ │ ├── logs.php
│ │ │ ├── map-points.php
│ │ │ ├── mentions.php
│ │ │ ├── move.php
│ │ │ ├── notes.php
│ │ │ ├── permissions.php
│ │ │ ├── pins.php
│ │ │ ├── profile.php
│ │ │ ├── quests.php
│ │ │ ├── relations.php
│ │ │ ├── reminders.php
│ │ │ ├── story.php
│ │ │ ├── tags.php
│ │ │ ├── timelines.php
│ │ │ └── transform.php
│ │ ├── entities.php
│ │ ├── errors.php
│ │ ├── events.php
│ │ ├── export.php
│ │ ├── families/
│ │ │ └── trees.php
│ │ ├── families.php
│ │ ├── faq.php
│ │ ├── fields.php
│ │ ├── filters.php
│ │ ├── footer.php
│ │ ├── front/
│ │ │ ├── community-votes.php
│ │ │ ├── hall-of-fame.php
│ │ │ ├── kb.php
│ │ │ └── newsletter.php
│ │ ├── front.php
│ │ ├── gallery.php
│ │ ├── general.php
│ │ ├── genres.php
│ │ ├── header.php
│ │ ├── helpers.php
│ │ ├── history.php
│ │ ├── items.php
│ │ ├── journals.php
│ │ ├── languages.php
│ │ ├── lists.php
│ │ ├── locations.php
│ │ ├── maps/
│ │ │ ├── explore.php
│ │ │ ├── groups.php
│ │ │ ├── layers.php
│ │ │ └── markers.php
│ │ ├── maps.php
│ │ ├── misc.php
│ │ ├── notes.php
│ │ ├── notifications.php
│ │ ├── onboarding/
│ │ │ ├── attributes.php
│ │ │ ├── characters.php
│ │ │ ├── locations.php
│ │ │ ├── posts.php
│ │ │ ├── reminders.php
│ │ │ └── tags.php
│ │ ├── organisations.php
│ │ ├── pagination.php
│ │ ├── partials.php
│ │ ├── passwords.php
│ │ ├── patreon.php
│ │ ├── permissions.php
│ │ ├── pins.php
│ │ ├── post_layouts.php
│ │ ├── posts.php
│ │ ├── presets.php
│ │ ├── profiles.php
│ │ ├── quests.php
│ │ ├── races.php
│ │ ├── redirects.php
│ │ ├── releases.php
│ │ ├── rpg_systems.php
│ │ ├── search/
│ │ │ └── fulltext.php
│ │ ├── search.php
│ │ ├── seo.php
│ │ ├── settings/
│ │ │ ├── account.php
│ │ │ ├── appearance.php
│ │ │ ├── boosters.php
│ │ │ └── premium.php
│ │ ├── settings.php
│ │ ├── sidebar.php
│ │ ├── starter.php
│ │ ├── subscription.php
│ │ ├── subscriptions/
│ │ │ ├── promos.php
│ │ │ └── renew.php
│ │ ├── subscriptions.php
│ │ ├── tags.php
│ │ ├── teams.php
│ │ ├── tiers.php
│ │ ├── timelines/
│ │ │ ├── elements.php
│ │ │ └── eras.php
│ │ ├── timelines.php
│ │ ├── users/
│ │ │ └── profile.php
│ │ ├── validation.php
│ │ ├── visibilities.php
│ │ ├── whiteboards/
│ │ │ └── draw.php
│ │ └── whiteboards.php
│ ├── en/
│ │ ├── abilities.php
│ │ ├── account/
│ │ │ ├── email.php
│ │ │ ├── password.php
│ │ │ └── social.php
│ │ ├── articles.php
│ │ ├── assistance.php
│ │ ├── attribute_templates.php
│ │ ├── attributes/
│ │ │ └── templates.php
│ │ ├── auth.php
│ │ ├── banners.php
│ │ ├── billing/
│ │ │ ├── information.php
│ │ │ ├── invoices.php
│ │ │ ├── menu.php
│ │ │ └── payment_methods.php
│ │ ├── bookmarks.php
│ │ ├── bragi/
│ │ │ └── backstory.php
│ │ ├── bragi.php
│ │ ├── calendars/
│ │ │ └── weather.php
│ │ ├── calendars.php
│ │ ├── callouts.php
│ │ ├── campaigns/
│ │ │ ├── achievements.php
│ │ │ ├── applications.php
│ │ │ ├── builder.php
│ │ │ ├── categories.php
│ │ │ ├── dashboard-header.php
│ │ │ ├── default-images.php
│ │ │ ├── defaults.php
│ │ │ ├── delete.php
│ │ │ ├── export.php
│ │ │ ├── gallery.php
│ │ │ ├── import.php
│ │ │ ├── invites.php
│ │ │ ├── limits.php
│ │ │ ├── logs.php
│ │ │ ├── members.php
│ │ │ ├── modules.php
│ │ │ ├── overview.php
│ │ │ ├── permissions.php
│ │ │ ├── plugins.php
│ │ │ ├── public.php
│ │ │ ├── recovery.php
│ │ │ ├── roles.php
│ │ │ ├── share.php
│ │ │ ├── sidebar.php
│ │ │ ├── stats.php
│ │ │ ├── styles.php
│ │ │ ├── vanity.php
│ │ │ ├── visibilities.php
│ │ │ └── webhooks.php
│ │ ├── campaigns.php
│ │ ├── characters.php
│ │ ├── colours.php
│ │ ├── concept.php
│ │ ├── confirm/
│ │ │ └── editing.php
│ │ ├── confirm.php
│ │ ├── connections/
│ │ │ └── web.php
│ │ ├── conversations.php
│ │ ├── cookieconsent.php
│ │ ├── creatures.php
│ │ ├── crud.php
│ │ ├── dashboard.php
│ │ ├── dashboards/
│ │ │ ├── onboarding.php
│ │ │ ├── premium.php
│ │ │ ├── setup.php
│ │ │ └── widgets/
│ │ │ ├── calendar.php
│ │ │ ├── campaign.php
│ │ │ ├── gallery.php
│ │ │ ├── header.php
│ │ │ ├── help.php
│ │ │ ├── join.php
│ │ │ ├── onboarding.php
│ │ │ ├── preview.php
│ │ │ ├── random.php
│ │ │ ├── recent.php
│ │ │ └── welcome.php
│ │ ├── datagrids.php
│ │ ├── datetime.php
│ │ ├── default.php
│ │ ├── dice_roll_results.php
│ │ ├── dice_rolls.php
│ │ ├── emails/
│ │ │ ├── activity/
│ │ │ │ ├── email.php
│ │ │ │ └── password.php
│ │ │ ├── purge/
│ │ │ │ ├── first.php
│ │ │ │ └── second.php
│ │ │ ├── subscriptions/
│ │ │ │ ├── expiring.php
│ │ │ │ ├── paypal-expiring.php
│ │ │ │ ├── upcoming.php
│ │ │ │ └── validation.php
│ │ │ ├── validation.php
│ │ │ ├── welcome/
│ │ │ │ └── 2024.php
│ │ │ └── welcome.php
│ │ ├── entities/
│ │ │ ├── abilities.php
│ │ │ ├── actions.php
│ │ │ ├── aliases.php
│ │ │ ├── assets.php
│ │ │ ├── attributes.php
│ │ │ ├── children.php
│ │ │ ├── events.php
│ │ │ ├── files.php
│ │ │ ├── image.php
│ │ │ ├── inventories.php
│ │ │ ├── links.php
│ │ │ ├── logs.php
│ │ │ ├── map-points.php
│ │ │ ├── mentions.php
│ │ │ ├── move.php
│ │ │ ├── notes.php
│ │ │ ├── permissions.php
│ │ │ ├── pins.php
│ │ │ ├── profile.php
│ │ │ ├── quests.php
│ │ │ ├── relations.php
│ │ │ ├── reminders.php
│ │ │ ├── share.php
│ │ │ ├── statuses.php
│ │ │ ├── story.php
│ │ │ ├── tags.php
│ │ │ ├── timelines.php
│ │ │ ├── tooltips.php
│ │ │ └── transform.php
│ │ ├── entities.php
│ │ ├── entries/
│ │ │ ├── archetypes.php
│ │ │ ├── archive.php
│ │ │ ├── bulk.php
│ │ │ ├── fields.php
│ │ │ └── tabs.php
│ │ ├── errors.php
│ │ ├── events.php
│ │ ├── export.php
│ │ ├── families/
│ │ │ └── trees.php
│ │ ├── families.php
│ │ ├── fields.php
│ │ ├── filters.php
│ │ ├── footer.php
│ │ ├── front/
│ │ │ ├── community-votes.php
│ │ │ ├── hall-of-fame.php
│ │ │ ├── kb.php
│ │ │ └── newsletter.php
│ │ ├── front.php
│ │ ├── gallery.php
│ │ ├── general.php
│ │ ├── genres.php
│ │ ├── header.php
│ │ ├── helpers.php
│ │ ├── history.php
│ │ ├── items.php
│ │ ├── journals.php
│ │ ├── languages.php
│ │ ├── lists.php
│ │ ├── locations.php
│ │ ├── maps/
│ │ │ ├── explore.php
│ │ │ ├── groups.php
│ │ │ ├── layers.php
│ │ │ └── markers.php
│ │ ├── maps.php
│ │ ├── misc.php
│ │ ├── notes.php
│ │ ├── notifications.php
│ │ ├── onboarding/
│ │ │ ├── attributes.php
│ │ │ ├── characters.php
│ │ │ ├── locations.php
│ │ │ ├── posts.php
│ │ │ ├── reminders.php
│ │ │ └── tags.php
│ │ ├── organisations.php
│ │ ├── pagination.php
│ │ ├── partials.php
│ │ ├── passwords.php
│ │ ├── patreon.php
│ │ ├── permissions.php
│ │ ├── pins.php
│ │ ├── playstyles.php
│ │ ├── post_layouts.php
│ │ ├── posts/
│ │ │ └── templates.php
│ │ ├── posts.php
│ │ ├── presets.php
│ │ ├── profiles.php
│ │ ├── quests.php
│ │ ├── races.php
│ │ ├── redirects.php
│ │ ├── referrals.php
│ │ ├── releases.php
│ │ ├── rpg_systems.php
│ │ ├── search/
│ │ │ └── fulltext.php
│ │ ├── search.php
│ │ ├── seo.php
│ │ ├── settings/
│ │ │ ├── account.php
│ │ │ ├── api.php
│ │ │ ├── appearance.php
│ │ │ ├── boosters.php
│ │ │ └── premium.php
│ │ ├── settings.php
│ │ ├── sidebar.php
│ │ ├── spotlights.php
│ │ ├── starter.php
│ │ ├── subscription.php
│ │ ├── subscriptions/
│ │ │ ├── cancellation.php
│ │ │ ├── cancelled.php
│ │ │ ├── confirm.php
│ │ │ ├── faq.php
│ │ │ ├── finish.php
│ │ │ ├── free-trial.php
│ │ │ ├── paypal-renew.php
│ │ │ ├── paypal.php
│ │ │ ├── promos.php
│ │ │ └── renew.php
│ │ ├── subscriptions.php
│ │ ├── tags.php
│ │ ├── teams.php
│ │ ├── tiers.php
│ │ ├── timelines/
│ │ │ ├── elements.php
│ │ │ └── eras.php
│ │ ├── timelines.php
│ │ ├── tiptap.php
│ │ ├── tutorials/
│ │ │ ├── actions.php
│ │ │ ├── characters.php
│ │ │ └── home.php
│ │ ├── users/
│ │ │ └── profile.php
│ │ ├── validation.php
│ │ ├── visibilities.php
│ │ ├── whiteboards/
│ │ │ └── draw.php
│ │ └── whiteboards.php
│ ├── en-US/
│ │ ├── bookmarks.php
│ │ ├── calendars/
│ │ │ └── weather.php
│ │ ├── calendars.php
│ │ ├── campaigns/
│ │ │ └── builder.php
│ │ ├── campaigns.php
│ │ ├── characters.php
│ │ ├── colours.php
│ │ ├── crud.php
│ │ ├── dashboard.php
│ │ ├── emails/
│ │ │ └── welcome.php
│ │ ├── entities/
│ │ │ └── attributes.php
│ │ ├── entities.php
│ │ ├── front.php
│ │ ├── helpers.php
│ │ ├── items.php
│ │ ├── locations.php
│ │ ├── maps/
│ │ │ └── markers.php
│ │ ├── organisations.php
│ │ ├── quests.php
│ │ └── sidebar.php
│ ├── es/
│ │ ├── abilities.php
│ │ ├── account/
│ │ │ ├── email.php
│ │ │ ├── password.php
│ │ │ └── social.php
│ │ ├── assistance.php
│ │ ├── attribute_templates.php
│ │ ├── attributes/
│ │ │ └── templates.php
│ │ ├── auth.php
│ │ ├── billing/
│ │ │ ├── information.php
│ │ │ ├── invoices.php
│ │ │ ├── menu.php
│ │ │ └── payment_methods.php
│ │ ├── bookmarks.php
│ │ ├── bragi/
│ │ │ └── backstory.php
│ │ ├── bragi.php
│ │ ├── calendars/
│ │ │ └── weather.php
│ │ ├── calendars.php
│ │ ├── callouts.php
│ │ ├── campaigns/
│ │ │ ├── achievements.php
│ │ │ ├── applications.php
│ │ │ ├── builder.php
│ │ │ ├── categories.php
│ │ │ ├── dashboard-header.php
│ │ │ ├── default-images.php
│ │ │ ├── defaults.php
│ │ │ ├── delete.php
│ │ │ ├── export.php
│ │ │ ├── gallery.php
│ │ │ ├── import.php
│ │ │ ├── invites.php
│ │ │ ├── limits.php
│ │ │ ├── logs.php
│ │ │ ├── members.php
│ │ │ ├── modules.php
│ │ │ ├── overview.php
│ │ │ ├── plugins.php
│ │ │ ├── public.php
│ │ │ ├── recovery.php
│ │ │ ├── roles.php
│ │ │ ├── share.php
│ │ │ ├── sidebar.php
│ │ │ ├── stats.php
│ │ │ ├── styles.php
│ │ │ ├── vanity.php
│ │ │ ├── visibilities.php
│ │ │ └── webhooks.php
│ │ ├── campaigns.php
│ │ ├── characters.php
│ │ ├── colours.php
│ │ ├── concept.php
│ │ ├── confirm/
│ │ │ └── editing.php
│ │ ├── confirm.php
│ │ ├── connections/
│ │ │ └── web.php
│ │ ├── conversations.php
│ │ ├── cookieconsent.php
│ │ ├── creatures.php
│ │ ├── crud.php
│ │ ├── dashboard.php
│ │ ├── dashboards/
│ │ │ ├── onboarding.php
│ │ │ ├── setup.php
│ │ │ └── widgets/
│ │ │ ├── calendar.php
│ │ │ ├── campaign.php
│ │ │ ├── header.php
│ │ │ ├── help.php
│ │ │ ├── join.php
│ │ │ ├── onboarding.php
│ │ │ ├── preview.php
│ │ │ ├── random.php
│ │ │ ├── recent.php
│ │ │ └── welcome.php
│ │ ├── datagrids.php
│ │ ├── datetime.php
│ │ ├── default.php
│ │ ├── dice_roll_results.php
│ │ ├── dice_rolls.php
│ │ ├── emails/
│ │ │ ├── activity/
│ │ │ │ ├── email.php
│ │ │ │ └── password.php
│ │ │ ├── purge/
│ │ │ │ ├── first.php
│ │ │ │ └── second.php
│ │ │ ├── subscriptions/
│ │ │ │ ├── expiring.php
│ │ │ │ ├── upcoming.php
│ │ │ │ └── validation.php
│ │ │ ├── validation.php
│ │ │ ├── welcome/
│ │ │ │ └── 2024.php
│ │ │ └── welcome.php
│ │ ├── entities/
│ │ │ ├── abilities.php
│ │ │ ├── actions.php
│ │ │ ├── aliases.php
│ │ │ ├── assets.php
│ │ │ ├── attributes.php
│ │ │ ├── children.php
│ │ │ ├── events.php
│ │ │ ├── files.php
│ │ │ ├── image.php
│ │ │ ├── inventories.php
│ │ │ ├── links.php
│ │ │ ├── logs.php
│ │ │ ├── map-points.php
│ │ │ ├── mentions.php
│ │ │ ├── move.php
│ │ │ ├── notes.php
│ │ │ ├── permissions.php
│ │ │ ├── pins.php
│ │ │ ├── profile.php
│ │ │ ├── quests.php
│ │ │ ├── relations.php
│ │ │ ├── reminders.php
│ │ │ ├── share.php
│ │ │ ├── story.php
│ │ │ ├── tags.php
│ │ │ ├── timelines.php
│ │ │ ├── tooltips.php
│ │ │ └── transform.php
│ │ ├── entities.php
│ │ ├── entries/
│ │ │ ├── archetypes.php
│ │ │ ├── bulk.php
│ │ │ ├── fields.php
│ │ │ └── tabs.php
│ │ ├── errors.php
│ │ ├── events.php
│ │ ├── export.php
│ │ ├── families/
│ │ │ └── trees.php
│ │ ├── families.php
│ │ ├── faq.php
│ │ ├── fields.php
│ │ ├── filters.php
│ │ ├── footer.php
│ │ ├── front/
│ │ │ ├── community-votes.php
│ │ │ ├── hall-of-fame.php
│ │ │ ├── kb.php
│ │ │ └── newsletter.php
│ │ ├── front.php
│ │ ├── gallery.php
│ │ ├── general.php
│ │ ├── genres.php
│ │ ├── header.php
│ │ ├── helpers.php
│ │ ├── history.php
│ │ ├── items.php
│ │ ├── journals.php
│ │ ├── languages.php
│ │ ├── lists.php
│ │ ├── locations.php
│ │ ├── maps/
│ │ │ ├── explore.php
│ │ │ ├── groups.php
│ │ │ ├── layers.php
│ │ │ └── markers.php
│ │ ├── maps.php
│ │ ├── misc.php
│ │ ├── notes.php
│ │ ├── notifications.php
│ │ ├── onboarding/
│ │ │ ├── attributes.php
│ │ │ ├── characters.php
│ │ │ ├── locations.php
│ │ │ ├── posts.php
│ │ │ ├── reminders.php
│ │ │ └── tags.php
│ │ ├── organisations.php
│ │ ├── pagination.php
│ │ ├── partials.php
│ │ ├── passwords.php
│ │ ├── patreon.php
│ │ ├── permissions.php
│ │ ├── pins.php
│ │ ├── playstyles.php
│ │ ├── post_layouts.php
│ │ ├── posts/
│ │ │ └── templates.php
│ │ ├── posts.php
│ │ ├── presets.php
│ │ ├── profiles.php
│ │ ├── quests.php
│ │ ├── races.php
│ │ ├── redirects.php
│ │ ├── referrals.php
│ │ ├── releases.php
│ │ ├── rpg_systems.php
│ │ ├── search/
│ │ │ └── fulltext.php
│ │ ├── search.php
│ │ ├── seo.php
│ │ ├── settings/
│ │ │ ├── account.php
│ │ │ ├── api.php
│ │ │ ├── appearance.php
│ │ │ ├── boosters.php
│ │ │ └── premium.php
│ │ ├── settings.php
│ │ ├── sidebar.php
│ │ ├── spotlights.php
│ │ ├── starter.php
│ │ ├── subscription.php
│ │ ├── subscriptions/
│ │ │ ├── cancellation.php
│ │ │ ├── cancelled.php
│ │ │ ├── confirm.php
│ │ │ ├── faq.php
│ │ │ ├── finish.php
│ │ │ ├── free-trial.php
│ │ │ ├── paypal.php
│ │ │ ├── promos.php
│ │ │ └── renew.php
│ │ ├── subscriptions.php
│ │ ├── tags.php
│ │ ├── teams.php
│ │ ├── tiers.php
│ │ ├── timelines/
│ │ │ ├── elements.php
│ │ │ └── eras.php
│ │ ├── timelines.php
│ │ ├── tiptap.php
│ │ ├── users/
│ │ │ └── profile.php
│ │ ├── validation.php
│ │ ├── visibilities.php
│ │ ├── whiteboards/
│ │ │ └── draw.php
│ │ └── whiteboards.php
│ ├── fr/
│ │ ├── abilities.php
│ │ ├── account/
│ │ │ ├── email.php
│ │ │ ├── password.php
│ │ │ └── social.php
│ │ ├── articles.php
│ │ ├── assistance.php
│ │ ├── attribute_templates.php
│ │ ├── attributes/
│ │ │ └── templates.php
│ │ ├── auth.php
│ │ ├── billing/
│ │ │ ├── information.php
│ │ │ ├── invoices.php
│ │ │ ├── menu.php
│ │ │ └── payment_methods.php
│ │ ├── bookmarks.php
│ │ ├── bragi/
│ │ │ └── backstory.php
│ │ ├── bragi.php
│ │ ├── calendars/
│ │ │ └── weather.php
│ │ ├── calendars.php
│ │ ├── callouts.php
│ │ ├── campaigns/
│ │ │ ├── achievements.php
│ │ │ ├── applications.php
│ │ │ ├── builder.php
│ │ │ ├── categories.php
│ │ │ ├── dashboard-header.php
│ │ │ ├── default-images.php
│ │ │ ├── defaults.php
│ │ │ ├── delete.php
│ │ │ ├── export.php
│ │ │ ├── gallery.php
│ │ │ ├── import.php
│ │ │ ├── invites.php
│ │ │ ├── limits.php
│ │ │ ├── logs.php
│ │ │ ├── members.php
│ │ │ ├── modules.php
│ │ │ ├── overview.php
│ │ │ ├── plugins.php
│ │ │ ├── public.php
│ │ │ ├── recovery.php
│ │ │ ├── roles.php
│ │ │ ├── share.php
│ │ │ ├── sidebar.php
│ │ │ ├── stats.php
│ │ │ ├── styles.php
│ │ │ ├── vanity.php
│ │ │ ├── visibilities.php
│ │ │ └── webhooks.php
│ │ ├── campaigns.php
│ │ ├── characters.php
│ │ ├── colours.php
│ │ ├── concept.php
│ │ ├── confirm/
│ │ │ └── editing.php
│ │ ├── confirm.php
│ │ ├── connections/
│ │ │ └── web.php
│ │ ├── conversations.php
│ │ ├── cookieconsent.php
│ │ ├── creatures.php
│ │ ├── crud.php
│ │ ├── dashboard.php
│ │ ├── dashboards/
│ │ │ ├── onboarding.php
│ │ │ ├── premium.php
│ │ │ ├── setup.php
│ │ │ └── widgets/
│ │ │ ├── calendar.php
│ │ │ ├── campaign.php
│ │ │ ├── gallery.php
│ │ │ ├── header.php
│ │ │ ├── help.php
│ │ │ ├── join.php
│ │ │ ├── onboarding.php
│ │ │ ├── preview.php
│ │ │ ├── random.php
│ │ │ ├── recent.php
│ │ │ └── welcome.php
│ │ ├── datagrids.php
│ │ ├── datetime.php
│ │ ├── default.php
│ │ ├── dice_roll_results.php
│ │ ├── dice_rolls.php
│ │ ├── emails/
│ │ │ ├── activity/
│ │ │ │ ├── email.php
│ │ │ │ └── password.php
│ │ │ ├── purge/
│ │ │ │ ├── first.php
│ │ │ │ └── second.php
│ │ │ ├── subscriptions/
│ │ │ │ ├── expiring.php
│ │ │ │ ├── paypal-expiring.php
│ │ │ │ ├── upcoming.php
│ │ │ │ └── validation.php
│ │ │ ├── validation.php
│ │ │ ├── welcome/
│ │ │ │ └── 2024.php
│ │ │ └── welcome.php
│ │ ├── entities/
│ │ │ ├── abilities.php
│ │ │ ├── actions.php
│ │ │ ├── aliases.php
│ │ │ ├── assets.php
│ │ │ ├── attributes.php
│ │ │ ├── children.php
│ │ │ ├── events.php
│ │ │ ├── files.php
│ │ │ ├── image.php
│ │ │ ├── inventories.php
│ │ │ ├── links.php
│ │ │ ├── logs.php
│ │ │ ├── map-points.php
│ │ │ ├── mentions.php
│ │ │ ├── move.php
│ │ │ ├── notes.php
│ │ │ ├── permissions.php
│ │ │ ├── pins.php
│ │ │ ├── profile.php
│ │ │ ├── quests.php
│ │ │ ├── relations.php
│ │ │ ├── reminders.php
│ │ │ ├── share.php
│ │ │ ├── statuses.php
│ │ │ ├── story.php
│ │ │ ├── tags.php
│ │ │ ├── timelines.php
│ │ │ ├── tooltips.php
│ │ │ └── transform.php
│ │ ├── entities.php
│ │ ├── entries/
│ │ │ ├── archetypes.php
│ │ │ ├── archive.php
│ │ │ ├── bulk.php
│ │ │ ├── fields.php
│ │ │ └── tabs.php
│ │ ├── errors.php
│ │ ├── events.php
│ │ ├── export.php
│ │ ├── families/
│ │ │ └── trees.php
│ │ ├── families.php
│ │ ├── faq.php
│ │ ├── fields.php
│ │ ├── filters.php
│ │ ├── footer.php
│ │ ├── front/
│ │ │ ├── community-votes.php
│ │ │ ├── hall-of-fame.php
│ │ │ ├── kb.php
│ │ │ └── newsletter.php
│ │ ├── front.php
│ │ ├── gallery.php
│ │ ├── general.php
│ │ ├── genres.php
│ │ ├── header.php
│ │ ├── helpers.php
│ │ ├── history.php
│ │ ├── items.php
│ │ ├── journals.php
│ │ ├── languages.php
│ │ ├── lists.php
│ │ ├── locations.php
│ │ ├── maps/
│ │ │ ├── explore.php
│ │ │ ├── groups.php
│ │ │ ├── layers.php
│ │ │ └── markers.php
│ │ ├── maps.php
│ │ ├── misc.php
│ │ ├── notes.php
│ │ ├── notifications.php
│ │ ├── onboarding/
│ │ │ ├── attributes.php
│ │ │ ├── characters.php
│ │ │ ├── locations.php
│ │ │ ├── posts.php
│ │ │ ├── reminders.php
│ │ │ └── tags.php
│ │ ├── organisations.php
│ │ ├── pagination.php
│ │ ├── partials.php
│ │ ├── passwords.php
│ │ ├── patreon.php
│ │ ├── permissions.php
│ │ ├── pins.php
│ │ ├── playstyles.php
│ │ ├── post_layouts.php
│ │ ├── posts/
│ │ │ └── templates.php
│ │ ├── posts.php
│ │ ├── presets.php
│ │ ├── profiles.php
│ │ ├── quests.php
│ │ ├── races.php
│ │ ├── redirects.php
│ │ ├── referrals.php
│ │ ├── releases.php
│ │ ├── rpg_systems.php
│ │ ├── search/
│ │ │ └── fulltext.php
│ │ ├── search.php
│ │ ├── seo.php
│ │ ├── settings/
│ │ │ ├── account.php
│ │ │ ├── api.php
│ │ │ ├── appearance.php
│ │ │ ├── boosters.php
│ │ │ └── premium.php
│ │ ├── settings.php
│ │ ├── sidebar.php
│ │ ├── spotlights.php
│ │ ├── starter.php
│ │ ├── subscription.php
│ │ ├── subscriptions/
│ │ │ ├── cancellation.php
│ │ │ ├── cancelled.php
│ │ │ ├── confirm.php
│ │ │ ├── faq.php
│ │ │ ├── finish.php
│ │ │ ├── free-trial.php
│ │ │ ├── paypal-renew.php
│ │ │ ├── paypal.php
│ │ │ ├── promos.php
│ │ │ └── renew.php
│ │ ├── subscriptions.php
│ │ ├── tags.php
│ │ ├── teams.php
│ │ ├── tiers.php
│ │ ├── timelines/
│ │ │ ├── elements.php
│ │ │ └── eras.php
│ │ ├── timelines.php
│ │ ├── tiptap.php
│ │ ├── users/
│ │ │ └── profile.php
│ │ ├── validation.php
│ │ ├── visibilities.php
│ │ ├── whiteboards/
│ │ │ └── draw.php
│ │ └── whiteboards.php
│ ├── hr/
│ │ ├── abilities.php
│ │ ├── attribute_templates.php
│ │ ├── attributes/
│ │ │ └── templates.php
│ │ ├── auth.php
│ │ ├── bookmarks.php
│ │ ├── calendars/
│ │ │ └── weather.php
│ │ ├── calendars.php
│ │ ├── campaigns/
│ │ │ ├── applications.php
│ │ │ ├── dashboard-header.php
│ │ │ ├── default-images.php
│ │ │ ├── gallery.php
│ │ │ ├── plugins.php
│ │ │ ├── recovery.php
│ │ │ └── stats.php
│ │ ├── campaigns.php
│ │ ├── characters.php
│ │ ├── colours.php
│ │ ├── conversations.php
│ │ ├── crud.php
│ │ ├── dashboard.php
│ │ ├── datetime.php
│ │ ├── default.php
│ │ ├── dice_roll_results.php
│ │ ├── dice_rolls.php
│ │ ├── emails/
│ │ │ └── welcome.php
│ │ ├── entities/
│ │ │ ├── abilities.php
│ │ │ ├── actions.php
│ │ │ ├── assets.php
│ │ │ ├── attributes.php
│ │ │ ├── events.php
│ │ │ ├── files.php
│ │ │ ├── image.php
│ │ │ ├── inventories.php
│ │ │ ├── links.php
│ │ │ ├── logs.php
│ │ │ ├── map-points.php
│ │ │ ├── mentions.php
│ │ │ ├── move.php
│ │ │ ├── notes.php
│ │ │ ├── permissions.php
│ │ │ ├── pins.php
│ │ │ ├── profile.php
│ │ │ ├── quests.php
│ │ │ ├── relations.php
│ │ │ ├── story.php
│ │ │ ├── timelines.php
│ │ │ └── transform.php
│ │ ├── entities.php
│ │ ├── errors.php
│ │ ├── events.php
│ │ ├── families.php
│ │ ├── faq.php
│ │ ├── footer.php
│ │ ├── front/
│ │ │ ├── community-votes.php
│ │ │ ├── hall-of-fame.php
│ │ │ └── newsletter.php
│ │ ├── front.php
│ │ ├── header.php
│ │ ├── helpers.php
│ │ ├── items.php
│ │ ├── journals.php
│ │ ├── languages.php
│ │ ├── locations.php
│ │ ├── maps/
│ │ │ ├── groups.php
│ │ │ ├── layers.php
│ │ │ └── markers.php
│ │ ├── maps.php
│ │ ├── misc.php
│ │ ├── notes.php
│ │ ├── notifications.php
│ │ ├── organisations.php
│ │ ├── pagination.php
│ │ ├── partials.php
│ │ ├── passwords.php
│ │ ├── patreon.php
│ │ ├── profiles.php
│ │ ├── quests.php
│ │ ├── races.php
│ │ ├── redirects.php
│ │ ├── releases.php
│ │ ├── rpg_systems.php
│ │ ├── search.php
│ │ ├── settings.php
│ │ ├── sidebar.php
│ │ ├── starter.php
│ │ ├── subscriptions.php
│ │ ├── tags.php
│ │ ├── teams.php
│ │ ├── tiers.php
│ │ ├── timelines/
│ │ │ ├── elements.php
│ │ │ └── eras.php
│ │ ├── timelines.php
│ │ └── validation.php
│ ├── it/
│ │ ├── abilities.php
│ │ ├── attribute_templates.php
│ │ ├── attributes/
│ │ │ └── templates.php
│ │ ├── auth.php
│ │ ├── billing/
│ │ │ ├── invoices.php
│ │ │ ├── menu.php
│ │ │ └── payment_methods.php
│ │ ├── bookmarks.php
│ │ ├── bragi.php
│ │ ├── calendars/
│ │ │ └── weather.php
│ │ ├── calendars.php
│ │ ├── callouts.php
│ │ ├── campaigns/
│ │ │ ├── achievements.php
│ │ │ ├── applications.php
│ │ │ ├── builder.php
│ │ │ ├── dashboard-header.php
│ │ │ ├── default-images.php
│ │ │ ├── export.php
│ │ │ ├── gallery.php
│ │ │ ├── import.php
│ │ │ ├── limits.php
│ │ │ ├── modules.php
│ │ │ ├── plugins.php
│ │ │ ├── public.php
│ │ │ ├── recovery.php
│ │ │ ├── roles.php
│ │ │ ├── sidebar.php
│ │ │ ├── stats.php
│ │ │ ├── styles.php
│ │ │ ├── vanity.php
│ │ │ └── webhooks.php
│ │ ├── campaigns.php
│ │ ├── characters.php
│ │ ├── colours.php
│ │ ├── concept.php
│ │ ├── confirm/
│ │ │ └── editing.php
│ │ ├── conversations.php
│ │ ├── cookieconsent.php
│ │ ├── creatures.php
│ │ ├── crud.php
│ │ ├── dashboard.php
│ │ ├── dashboards/
│ │ │ └── widgets/
│ │ │ └── welcome.php
│ │ ├── datagrids.php
│ │ ├── datetime.php
│ │ ├── default.php
│ │ ├── dice_roll_results.php
│ │ ├── dice_rolls.php
│ │ ├── emails/
│ │ │ ├── purge/
│ │ │ │ ├── first.php
│ │ │ │ └── second.php
│ │ │ ├── subscriptions/
│ │ │ │ ├── expiring.php
│ │ │ │ ├── upcoming.php
│ │ │ │ └── validation.php
│ │ │ ├── validation.php
│ │ │ ├── welcome/
│ │ │ │ └── 2024.php
│ │ │ └── welcome.php
│ │ ├── entities/
│ │ │ ├── abilities.php
│ │ │ ├── actions.php
│ │ │ ├── aliases.php
│ │ │ ├── assets.php
│ │ │ ├── attributes.php
│ │ │ ├── events.php
│ │ │ ├── files.php
│ │ │ ├── image.php
│ │ │ ├── inventories.php
│ │ │ ├── links.php
│ │ │ ├── logs.php
│ │ │ ├── map-points.php
│ │ │ ├── mentions.php
│ │ │ ├── move.php
│ │ │ ├── notes.php
│ │ │ ├── permissions.php
│ │ │ ├── pins.php
│ │ │ ├── profile.php
│ │ │ ├── quests.php
│ │ │ ├── relations.php
│ │ │ ├── story.php
│ │ │ ├── timelines.php
│ │ │ └── transform.php
│ │ ├── entities.php
│ │ ├── errors.php
│ │ ├── events.php
│ │ ├── families/
│ │ │ └── trees.php
│ │ ├── families.php
│ │ ├── faq.php
│ │ ├── fields.php
│ │ ├── filters.php
│ │ ├── footer.php
│ │ ├── front/
│ │ │ ├── community-votes.php
│ │ │ ├── hall-of-fame.php
│ │ │ ├── kb.php
│ │ │ └── newsletter.php
│ │ ├── front.php
│ │ ├── gallery.php
│ │ ├── general.php
│ │ ├── genres.php
│ │ ├── header.php
│ │ ├── helpers.php
│ │ ├── history.php
│ │ ├── items.php
│ │ ├── journals.php
│ │ ├── languages.php
│ │ ├── locations.php
│ │ ├── maps/
│ │ │ ├── explore.php
│ │ │ ├── groups.php
│ │ │ ├── layers.php
│ │ │ └── markers.php
│ │ ├── maps.php
│ │ ├── misc.php
│ │ ├── notes.php
│ │ ├── notifications.php
│ │ ├── organisations.php
│ │ ├── pagination.php
│ │ ├── partials.php
│ │ ├── passwords.php
│ │ ├── patreon.php
│ │ ├── pins.php
│ │ ├── post_layouts.php
│ │ ├── posts.php
│ │ ├── presets.php
│ │ ├── profiles.php
│ │ ├── quests.php
│ │ ├── races.php
│ │ ├── redirects.php
│ │ ├── releases.php
│ │ ├── rpg_systems.php
│ │ ├── search/
│ │ │ └── fulltext.php
│ │ ├── search.php
│ │ ├── settings/
│ │ │ ├── appearance.php
│ │ │ ├── boosters.php
│ │ │ └── premium.php
│ │ ├── settings.php
│ │ ├── sidebar.php
│ │ ├── starter.php
│ │ ├── subscription.php
│ │ ├── subscriptions/
│ │ │ └── promos.php
│ │ ├── subscriptions.php
│ │ ├── tags.php
│ │ ├── teams.php
│ │ ├── tiers.php
│ │ ├── timelines/
│ │ │ ├── elements.php
│ │ │ └── eras.php
│ │ ├── timelines.php
│ │ ├── users/
│ │ │ └── profile.php
│ │ ├── validation.php
│ │ └── visibilities.php
│ ├── nl/
│ │ ├── abilities.php
│ │ ├── attribute_templates.php
│ │ ├── auth.php
│ │ ├── bookmarks.php
│ │ ├── calendars/
│ │ │ └── weather.php
│ │ ├── calendars.php
│ │ ├── campaigns/
│ │ │ ├── applications.php
│ │ │ ├── default-images.php
│ │ │ ├── gallery.php
│ │ │ ├── plugins.php
│ │ │ ├── recovery.php
│ │ │ └── stats.php
│ │ ├── campaigns.php
│ │ ├── characters.php
│ │ ├── colours.php
│ │ ├── conversations.php
│ │ ├── crud.php
│ │ ├── dashboard.php
│ │ ├── datetime.php
│ │ ├── default.php
│ │ ├── dice_roll_results.php
│ │ ├── dice_rolls.php
│ │ ├── emails/
│ │ │ └── welcome.php
│ │ ├── entities/
│ │ │ ├── abilities.php
│ │ │ ├── actions.php
│ │ │ ├── attributes.php
│ │ │ ├── events.php
│ │ │ ├── inventories.php
│ │ │ ├── links.php
│ │ │ ├── logs.php
│ │ │ ├── map-points.php
│ │ │ ├── mentions.php
│ │ │ ├── notes.php
│ │ │ ├── relations.php
│ │ │ └── timelines.php
│ │ ├── entities.php
│ │ ├── errors.php
│ │ ├── events.php
│ │ ├── families.php
│ │ ├── faq.php
│ │ ├── footer.php
│ │ ├── front/
│ │ │ ├── community-votes.php
│ │ │ ├── hall-of-fame.php
│ │ │ └── newsletter.php
│ │ ├── front.php
│ │ ├── header.php
│ │ ├── helpers.php
│ │ ├── items.php
│ │ ├── journals.php
│ │ ├── languages.php
│ │ ├── locations.php
│ │ ├── maps/
│ │ │ ├── groups.php
│ │ │ ├── layers.php
│ │ │ └── markers.php
│ │ ├── maps.php
│ │ ├── misc.php
│ │ ├── notes.php
│ │ ├── notifications.php
│ │ ├── organisations.php
│ │ ├── pagination.php
│ │ ├── partials.php
│ │ ├── passwords.php
│ │ ├── patreon.php
│ │ ├── profiles.php
│ │ ├── quests.php
│ │ ├── races.php
│ │ ├── redirects.php
│ │ ├── releases.php
│ │ ├── rpg_systems.php
│ │ ├── search.php
│ │ ├── settings.php
│ │ ├── sidebar.php
│ │ ├── starter.php
│ │ ├── subscriptions.php
│ │ ├── tags.php
│ │ ├── teams.php
│ │ ├── tiers.php
│ │ ├── timelines/
│ │ │ ├── elements.php
│ │ │ └── eras.php
│ │ ├── timelines.php
│ │ └── validation.php
│ ├── pl/
│ │ ├── abilities.php
│ │ ├── account/
│ │ │ ├── email.php
│ │ │ ├── password.php
│ │ │ └── social.php
│ │ ├── assistance.php
│ │ ├── attribute_templates.php
│ │ ├── attributes/
│ │ │ └── templates.php
│ │ ├── auth.php
│ │ ├── banners.php
│ │ ├── billing/
│ │ │ ├── information.php
│ │ │ ├── invoices.php
│ │ │ ├── menu.php
│ │ │ └── payment_methods.php
│ │ ├── bookmarks.php
│ │ ├── bragi/
│ │ │ └── backstory.php
│ │ ├── bragi.php
│ │ ├── calendars/
│ │ │ ├── .gitkeep
│ │ │ └── weather.php
│ │ ├── calendars.php
│ │ ├── callouts.php
│ │ ├── campaigns/
│ │ │ ├── .gitkeep
│ │ │ ├── achievements.php
│ │ │ ├── applications.php
│ │ │ ├── builder.php
│ │ │ ├── dashboard-header.php
│ │ │ ├── default-images.php
│ │ │ ├── defaults.php
│ │ │ ├── delete.php
│ │ │ ├── export.php
│ │ │ ├── gallery.php
│ │ │ ├── import.php
│ │ │ ├── invites.php
│ │ │ ├── limits.php
│ │ │ ├── logs.php
│ │ │ ├── members.php
│ │ │ ├── modules.php
│ │ │ ├── overview.php
│ │ │ ├── plugins.php
│ │ │ ├── public.php
│ │ │ ├── recovery.php
│ │ │ ├── roles.php
│ │ │ ├── sidebar.php
│ │ │ ├── stats.php
│ │ │ ├── styles.php
│ │ │ ├── vanity.php
│ │ │ ├── visibilities.php
│ │ │ └── webhooks.php
│ │ ├── campaigns.php
│ │ ├── characters.php
│ │ ├── colours.php
│ │ ├── concept.php
│ │ ├── confirm/
│ │ │ └── editing.php
│ │ ├── confirm.php
│ │ ├── connections/
│ │ │ └── web.php
│ │ ├── conversations.php
│ │ ├── cookieconsent.php
│ │ ├── creatures.php
│ │ ├── crud.php
│ │ ├── dashboard.php
│ │ ├── dashboards/
│ │ │ ├── onboarding.php
│ │ │ ├── setup.php
│ │ │ └── widgets/
│ │ │ ├── calendar.php
│ │ │ ├── campaign.php
│ │ │ ├── header.php
│ │ │ ├── help.php
│ │ │ ├── onboarding.php
│ │ │ ├── preview.php
│ │ │ ├── random.php
│ │ │ ├── recent.php
│ │ │ └── welcome.php
│ │ ├── datagrids.php
│ │ ├── datetime.php
│ │ ├── default.php
│ │ ├── dice_roll_results.php
│ │ ├── dice_rolls.php
│ │ ├── emails/
│ │ │ ├── activity/
│ │ │ │ ├── email.php
│ │ │ │ └── password.php
│ │ │ ├── purge/
│ │ │ │ ├── first.php
│ │ │ │ └── second.php
│ │ │ ├── subscriptions/
│ │ │ │ ├── expiring.php
│ │ │ │ ├── upcoming.php
│ │ │ │ └── validation.php
│ │ │ ├── validation.php
│ │ │ ├── welcome/
│ │ │ │ └── 2024.php
│ │ │ └── welcome.php
│ │ ├── entities/
│ │ │ ├── .gitkeep
│ │ │ ├── abilities.php
│ │ │ ├── actions.php
│ │ │ ├── aliases.php
│ │ │ ├── assets.php
│ │ │ ├── attributes.php
│ │ │ ├── children.php
│ │ │ ├── events.php
│ │ │ ├── files.php
│ │ │ ├── image.php
│ │ │ ├── inventories.php
│ │ │ ├── links.php
│ │ │ ├── logs.php
│ │ │ ├── map-points.php
│ │ │ ├── mentions.php
│ │ │ ├── move.php
│ │ │ ├── notes.php
│ │ │ ├── permissions.php
│ │ │ ├── pins.php
│ │ │ ├── profile.php
│ │ │ ├── quests.php
│ │ │ ├── relations.php
│ │ │ ├── reminders.php
│ │ │ ├── story.php
│ │ │ ├── tags.php
│ │ │ ├── timelines.php
│ │ │ ├── tooltips.php
│ │ │ └── transform.php
│ │ ├── entities.php
│ │ ├── errors.php
│ │ ├── events.php
│ │ ├── export.php
│ │ ├── families/
│ │ │ └── trees.php
│ │ ├── families.php
│ │ ├── faq.php
│ │ ├── fields.php
│ │ ├── filters.php
│ │ ├── footer.php
│ │ ├── front/
│ │ │ ├── community-votes.php
│ │ │ ├── hall-of-fame.php
│ │ │ ├── kb.php
│ │ │ └── newsletter.php
│ │ ├── front.php
│ │ ├── gallery.php
│ │ ├── general.php
│ │ ├── genres.php
│ │ ├── header.php
│ │ ├── helpers.php
│ │ ├── history.php
│ │ ├── items.php
│ │ ├── journals.php
│ │ ├── languages.php
│ │ ├── lists.php
│ │ ├── locations.php
│ │ ├── maps/
│ │ │ ├── .gitkeep
│ │ │ ├── explore.php
│ │ │ ├── groups.php
│ │ │ ├── layers.php
│ │ │ └── markers.php
│ │ ├── maps.php
│ │ ├── misc.php
│ │ ├── notes.php
│ │ ├── notifications.php
│ │ ├── onboarding/
│ │ │ ├── attributes.php
│ │ │ ├── characters.php
│ │ │ ├── locations.php
│ │ │ ├── posts.php
│ │ │ ├── reminders.php
│ │ │ └── tags.php
│ │ ├── organisations.php
│ │ ├── pagination.php
│ │ ├── partials.php
│ │ ├── passwords.php
│ │ ├── patreon.php
│ │ ├── permissions.php
│ │ ├── pins.php
│ │ ├── post_layouts.php
│ │ ├── posts.php
│ │ ├── presets.php
│ │ ├── profiles.php
│ │ ├── quests.php
│ │ ├── races.php
│ │ ├── redirects.php
│ │ ├── referrals.php
│ │ ├── releases.php
│ │ ├── rpg_systems.php
│ │ ├── search/
│ │ │ └── fulltext.php
│ │ ├── search.php
│ │ ├── seo.php
│ │ ├── settings/
│ │ │ ├── account.php
│ │ │ ├── api.php
│ │ │ ├── appearance.php
│ │ │ ├── boosters.php
│ │ │ └── premium.php
│ │ ├── settings.php
│ │ ├── sidebar.php
│ │ ├── spotlights.php
│ │ ├── starter.php
│ │ ├── subscription.php
│ │ ├── subscriptions/
│ │ │ ├── cancellation.php
│ │ │ ├── cancelled.php
│ │ │ ├── confirm.php
│ │ │ ├── faq.php
│ │ │ ├── finish.php
│ │ │ ├── free-trial.php
│ │ │ ├── paypal.php
│ │ │ ├── promos.php
│ │ │ └── renew.php
│ │ ├── subscriptions.php
│ │ ├── tags.php
│ │ ├── teams.php
│ │ ├── tiers.php
│ │ ├── timelines/
│ │ │ ├── .gitkeep
│ │ │ ├── elements.php
│ │ │ └── eras.php
│ │ ├── timelines.php
│ │ ├── users/
│ │ │ └── profile.php
│ │ ├── validation-inline.php
│ │ ├── validation.php
│ │ ├── visibilities.php
│ │ ├── whiteboards/
│ │ │ └── draw.php
│ │ └── whiteboards.php
│ ├── pt-BR/
│ │ ├── abilities.php
│ │ ├── account/
│ │ │ ├── email.php
│ │ │ ├── password.php
│ │ │ └── social.php
│ │ ├── articles.php
│ │ ├── assistance.php
│ │ ├── attribute_templates.php
│ │ ├── attributes/
│ │ │ └── templates.php
│ │ ├── auth.php
│ │ ├── banners.php
│ │ ├── billing/
│ │ │ ├── information.php
│ │ │ ├── invoices.php
│ │ │ ├── menu.php
│ │ │ └── payment_methods.php
│ │ ├── bookmarks.php
│ │ ├── bragi/
│ │ │ └── backstory.php
│ │ ├── bragi.php
│ │ ├── calendars/
│ │ │ └── weather.php
│ │ ├── calendars.php
│ │ ├── callouts.php
│ │ ├── campaigns/
│ │ │ ├── achievements.php
│ │ │ ├── applications.php
│ │ │ ├── builder.php
│ │ │ ├── categories.php
│ │ │ ├── dashboard-header.php
│ │ │ ├── default-images.php
│ │ │ ├── delete.php
│ │ │ ├── export.php
│ │ │ ├── gallery.php
│ │ │ ├── import.php
│ │ │ ├── invites.php
│ │ │ ├── limits.php
│ │ │ ├── logs.php
│ │ │ ├── members.php
│ │ │ ├── modules.php
│ │ │ ├── overview.php
│ │ │ ├── plugins.php
│ │ │ ├── public.php
│ │ │ ├── recovery.php
│ │ │ ├── roles.php
│ │ │ ├── sidebar.php
│ │ │ ├── stats.php
│ │ │ ├── styles.php
│ │ │ ├── vanity.php
│ │ │ └── webhooks.php
│ │ ├── campaigns.php
│ │ ├── characters.php
│ │ ├── colours.php
│ │ ├── concept.php
│ │ ├── confirm/
│ │ │ └── editing.php
│ │ ├── confirm.php
│ │ ├── conversations.php
│ │ ├── cookieconsent.php
│ │ ├── creatures.php
│ │ ├── crud.php
│ │ ├── dashboard.php
│ │ ├── dashboards/
│ │ │ ├── premium.php
│ │ │ └── widgets/
│ │ │ └── welcome.php
│ │ ├── datagrids.php
│ │ ├── datetime.php
│ │ ├── default.php
│ │ ├── dice_roll_results.php
│ │ ├── dice_rolls.php
│ │ ├── emails/
│ │ │ ├── activity/
│ │ │ │ ├── email.php
│ │ │ │ └── password.php
│ │ │ ├── purge/
│ │ │ │ ├── first.php
│ │ │ │ └── second.php
│ │ │ ├── subscriptions/
│ │ │ │ ├── expiring.php
│ │ │ │ ├── upcoming.php
│ │ │ │ └── validation.php
│ │ │ ├── validation.php
│ │ │ ├── welcome/
│ │ │ │ └── 2024.php
│ │ │ └── welcome.php
│ │ ├── entities/
│ │ │ ├── abilities.php
│ │ │ ├── actions.php
│ │ │ ├── aliases.php
│ │ │ ├── assets.php
│ │ │ ├── attributes.php
│ │ │ ├── children.php
│ │ │ ├── events.php
│ │ │ ├── files.php
│ │ │ ├── image.php
│ │ │ ├── inventories.php
│ │ │ ├── links.php
│ │ │ ├── logs.php
│ │ │ ├── map-points.php
│ │ │ ├── mentions.php
│ │ │ ├── move.php
│ │ │ ├── notes.php
│ │ │ ├── permissions.php
│ │ │ ├── pins.php
│ │ │ ├── profile.php
│ │ │ ├── quests.php
│ │ │ ├── relations.php
│ │ │ ├── reminders.php
│ │ │ ├── story.php
│ │ │ ├── tags.php
│ │ │ ├── timelines.php
│ │ │ └── transform.php
│ │ ├── entities.php
│ │ ├── entries/
│ │ │ └── tabs.php
│ │ ├── errors.php
│ │ ├── events.php
│ │ ├── families/
│ │ │ └── trees.php
│ │ ├── families.php
│ │ ├── faq.php
│ │ ├── fields.php
│ │ ├── filters.php
│ │ ├── footer.php
│ │ ├── front/
│ │ │ ├── community-votes.php
│ │ │ ├── hall-of-fame.php
│ │ │ ├── kb.php
│ │ │ └── newsletter.php
│ │ ├── front.php
│ │ ├── gallery.php
│ │ ├── general.php
│ │ ├── genres.php
│ │ ├── header.php
│ │ ├── helpers.php
│ │ ├── history.php
│ │ ├── items.php
│ │ ├── journals.php
│ │ ├── languages.php
│ │ ├── locations.php
│ │ ├── maps/
│ │ │ ├── explore.php
│ │ │ ├── groups.php
│ │ │ ├── layers.php
│ │ │ └── markers.php
│ │ ├── maps.php
│ │ ├── misc.php
│ │ ├── notes.php
│ │ ├── notifications.php
│ │ ├── onboarding/
│ │ │ └── characters.php
│ │ ├── organisations.php
│ │ ├── partials.php
│ │ ├── patreon.php
│ │ ├── permissions.php
│ │ ├── pins.php
│ │ ├── playstyles.php
│ │ ├── post_layouts.php
│ │ ├── posts/
│ │ │ └── templates.php
│ │ ├── posts.php
│ │ ├── presets.php
│ │ ├── profiles.php
│ │ ├── quests.php
│ │ ├── races.php
│ │ ├── redirects.php
│ │ ├── releases.php
│ │ ├── rpg_systems.php
│ │ ├── search/
│ │ │ └── fulltext.php
│ │ ├── search.php
│ │ ├── seo.php
│ │ ├── settings/
│ │ │ ├── account.php
│ │ │ ├── appearance.php
│ │ │ ├── boosters.php
│ │ │ └── premium.php
│ │ ├── settings.php
│ │ ├── sidebar.php
│ │ ├── starter.php
│ │ ├── subscription.php
│ │ ├── subscriptions/
│ │ │ ├── cancelled.php
│ │ │ ├── confirm.php
│ │ │ ├── faq.php
│ │ │ ├── finish.php
│ │ │ ├── free-trial.php
│ │ │ ├── promos.php
│ │ │ └── renew.php
│ │ ├── subscriptions.php
│ │ ├── tags.php
│ │ ├── teams.php
│ │ ├── tiers.php
│ │ ├── timelines/
│ │ │ ├── elements.php
│ │ │ └── eras.php
│ │ ├── timelines.php
│ │ ├── tiptap.php
│ │ ├── users/
│ │ │ └── profile.php
│ │ ├── validation.php
│ │ ├── visibilities.php
│ │ └── whiteboards.php
│ ├── ru/
│ │ ├── abilities.php
│ │ ├── account/
│ │ │ ├── email.php
│ │ │ ├── password.php
│ │ │ └── social.php
│ │ ├── assistance.php
│ │ ├── attribute_templates.php
│ │ ├── attributes/
│ │ │ └── templates.php
│ │ ├── auth.php
│ │ ├── banners.php
│ │ ├── billing/
│ │ │ ├── information.php
│ │ │ ├── invoices.php
│ │ │ ├── menu.php
│ │ │ └── payment_methods.php
│ │ ├── bookmarks.php
│ │ ├── bragi.php
│ │ ├── calendars/
│ │ │ └── weather.php
│ │ ├── calendars.php
│ │ ├── callouts.php
│ │ ├── campaigns/
│ │ │ ├── achievements.php
│ │ │ ├── applications.php
│ │ │ ├── dashboard-header.php
│ │ │ ├── default-images.php
│ │ │ ├── export.php
│ │ │ ├── gallery.php
│ │ │ ├── limits.php
│ │ │ ├── plugins.php
│ │ │ ├── public.php
│ │ │ ├── recovery.php
│ │ │ ├── roles.php
│ │ │ ├── sidebar.php
│ │ │ ├── stats.php
│ │ │ └── styles.php
│ │ ├── campaigns.php
│ │ ├── characters.php
│ │ ├── colours.php
│ │ ├── concept.php
│ │ ├── conversations.php
│ │ ├── creatures.php
│ │ ├── crud.php
│ │ ├── dashboard.php
│ │ ├── datetime.php
│ │ ├── default.php
│ │ ├── dice_roll_results.php
│ │ ├── dice_rolls.php
│ │ ├── emails/
│ │ │ ├── subscriptions/
│ │ │ │ ├── expiring.php
│ │ │ │ └── upcoming.php
│ │ │ └── welcome.php
│ │ ├── entities/
│ │ │ ├── abilities.php
│ │ │ ├── actions.php
│ │ │ ├── aliases.php
│ │ │ ├── assets.php
│ │ │ ├── attributes.php
│ │ │ ├── events.php
│ │ │ ├── files.php
│ │ │ ├── image.php
│ │ │ ├── inventories.php
│ │ │ ├── links.php
│ │ │ ├── logs.php
│ │ │ ├── map-points.php
│ │ │ ├── mentions.php
│ │ │ ├── move.php
│ │ │ ├── notes.php
│ │ │ ├── permissions.php
│ │ │ ├── pins.php
│ │ │ ├── profile.php
│ │ │ ├── quests.php
│ │ │ ├── relations.php
│ │ │ ├── story.php
│ │ │ ├── timelines.php
│ │ │ └── transform.php
│ │ ├── entities.php
│ │ ├── errors.php
│ │ ├── events.php
│ │ ├── families.php
│ │ ├── faq.php
│ │ ├── fields.php
│ │ ├── filters.php
│ │ ├── footer.php
│ │ ├── front/
│ │ │ ├── community-votes.php
│ │ │ ├── hall-of-fame.php
│ │ │ ├── kb.php
│ │ │ └── newsletter.php
│ │ ├── front.php
│ │ ├── general.php
│ │ ├── header.php
│ │ ├── helpers.php
│ │ ├── items.php
│ │ ├── journals.php
│ │ ├── languages.php
│ │ ├── locations.php
│ │ ├── maps/
│ │ │ ├── explore.php
│ │ │ ├── groups.php
│ │ │ ├── layers.php
│ │ │ └── markers.php
│ │ ├── maps.php
│ │ ├── misc.php
│ │ ├── notes.php
│ │ ├── notifications.php
│ │ ├── onboarding/
│ │ │ └── tags.php
│ │ ├── organisations.php
│ │ ├── pagination.php
│ │ ├── partials.php
│ │ ├── passwords.php
│ │ ├── patreon.php
│ │ ├── posts.php
│ │ ├── presets.php
│ │ ├── profiles.php
│ │ ├── quests.php
│ │ ├── races.php
│ │ ├── redirects.php
│ │ ├── releases.php
│ │ ├── rpg_systems.php
│ │ ├── search.php
│ │ ├── settings/
│ │ │ └── boosters.php
│ │ ├── settings.php
│ │ ├── sidebar.php
│ │ ├── starter.php
│ │ ├── subscription.php
│ │ ├── subscriptions/
│ │ │ └── promos.php
│ │ ├── subscriptions.php
│ │ ├── tags.php
│ │ ├── teams.php
│ │ ├── tiers.php
│ │ ├── timelines/
│ │ │ ├── elements.php
│ │ │ └── eras.php
│ │ ├── timelines.php
│ │ ├── users/
│ │ │ └── profile.php
│ │ ├── validation.php
│ │ ├── visibilities.php
│ │ ├── whiteboards/
│ │ │ └── draw.php
│ │ └── whiteboards.php
│ ├── sk/
│ │ ├── abilities.php
│ │ ├── articles.php
│ │ ├── attribute_templates.php
│ │ ├── attributes/
│ │ │ └── templates.php
│ │ ├── auth.php
│ │ ├── banners.php
│ │ ├── billing/
│ │ │ ├── invoices.php
│ │ │ ├── menu.php
│ │ │ └── payment_methods.php
│ │ ├── bookmarks.php
│ │ ├── bragi.php
│ │ ├── calendars/
│ │ │ └── weather.php
│ │ ├── calendars.php
│ │ ├── callouts.php
│ │ ├── campaigns/
│ │ │ ├── achievements.php
│ │ │ ├── applications.php
│ │ │ ├── builder.php
│ │ │ ├── categories.php
│ │ │ ├── dashboard-header.php
│ │ │ ├── default-images.php
│ │ │ ├── delete.php
│ │ │ ├── export.php
│ │ │ ├── gallery.php
│ │ │ ├── import.php
│ │ │ ├── invites.php
│ │ │ ├── limits.php
│ │ │ ├── members.php
│ │ │ ├── modules.php
│ │ │ ├── overview.php
│ │ │ ├── plugins.php
│ │ │ ├── public.php
│ │ │ ├── recovery.php
│ │ │ ├── roles.php
│ │ │ ├── sidebar.php
│ │ │ ├── stats.php
│ │ │ ├── styles.php
│ │ │ ├── vanity.php
│ │ │ └── webhooks.php
│ │ ├── campaigns.php
│ │ ├── characters.php
│ │ ├── colours.php
│ │ ├── concept.php
│ │ ├── confirm/
│ │ │ └── editing.php
│ │ ├── conversations.php
│ │ ├── cookieconsent.php
│ │ ├── creatures.php
│ │ ├── crud.php
│ │ ├── dashboard.php
│ │ ├── dashboards/
│ │ │ └── widgets/
│ │ │ └── welcome.php
│ │ ├── datagrids.php
│ │ ├── datetime.php
│ │ ├── default.php
│ │ ├── dice_roll_results.php
│ │ ├── dice_rolls.php
│ │ ├── emails/
│ │ │ ├── activity/
│ │ │ │ └── password.php
│ │ │ ├── purge/
│ │ │ │ ├── first.php
│ │ │ │ └── second.php
│ │ │ ├── subscriptions/
│ │ │ │ ├── expiring.php
│ │ │ │ ├── upcoming.php
│ │ │ │ └── validation.php
│ │ │ ├── validation.php
│ │ │ ├── welcome/
│ │ │ │ └── 2024.php
│ │ │ └── welcome.php
│ │ ├── entities/
│ │ │ ├── abilities.php
│ │ │ ├── actions.php
│ │ │ ├── aliases.php
│ │ │ ├── assets.php
│ │ │ ├── attributes.php
│ │ │ ├── children.php
│ │ │ ├── events.php
│ │ │ ├── files.php
│ │ │ ├── image.php
│ │ │ ├── inventories.php
│ │ │ ├── links.php
│ │ │ ├── logs.php
│ │ │ ├── map-points.php
│ │ │ ├── mentions.php
│ │ │ ├── move.php
│ │ │ ├── notes.php
│ │ │ ├── permissions.php
│ │ │ ├── pins.php
│ │ │ ├── profile.php
│ │ │ ├── quests.php
│ │ │ ├── relations.php
│ │ │ ├── story.php
│ │ │ ├── timelines.php
│ │ │ └── transform.php
│ │ ├── entities.php
│ │ ├── errors.php
│ │ ├── events.php
│ │ ├── export.php
│ │ ├── families/
│ │ │ └── trees.php
│ │ ├── families.php
│ │ ├── faq.php
│ │ ├── fields.php
│ │ ├── filters.php
│ │ ├── footer.php
│ │ ├── front/
│ │ │ ├── community-votes.php
│ │ │ ├── hall-of-fame.php
│ │ │ ├── kb.php
│ │ │ └── newsletter.php
│ │ ├── front.php
│ │ ├── gallery.php
│ │ ├── general.php
│ │ ├── genres.php
│ │ ├── header.php
│ │ ├── helpers.php
│ │ ├── history.php
│ │ ├── items.php
│ │ ├── journals.php
│ │ ├── languages.php
│ │ ├── locations.php
│ │ ├── maps/
│ │ │ ├── explore.php
│ │ │ ├── groups.php
│ │ │ ├── layers.php
│ │ │ └── markers.php
│ │ ├── maps.php
│ │ ├── misc.php
│ │ ├── notes.php
│ │ ├── notifications.php
│ │ ├── onboarding/
│ │ │ └── tags.php
│ │ ├── organisations.php
│ │ ├── pagination.php
│ │ ├── partials.php
│ │ ├── passwords.php
│ │ ├── patreon.php
│ │ ├── permissions.php
│ │ ├── pins.php
│ │ ├── playstyles.php
│ │ ├── post_layouts.php
│ │ ├── posts.php
│ │ ├── presets.php
│ │ ├── profiles.php
│ │ ├── quests.php
│ │ ├── races.php
│ │ ├── redirects.php
│ │ ├── releases.php
│ │ ├── rpg_systems.php
│ │ ├── search/
│ │ │ └── fulltext.php
│ │ ├── search.php
│ │ ├── seo.php
│ │ ├── settings/
│ │ │ ├── account.php
│ │ │ ├── appearance.php
│ │ │ ├── boosters.php
│ │ │ └── premium.php
│ │ ├── settings.php
│ │ ├── sidebar.php
│ │ ├── starter.php
│ │ ├── subscription.php
│ │ ├── subscriptions/
│ │ │ ├── promos.php
│ │ │ └── renew.php
│ │ ├── subscriptions.php
│ │ ├── tags.php
│ │ ├── teams.php
│ │ ├── tiers.php
│ │ ├── timelines/
│ │ │ ├── elements.php
│ │ │ └── eras.php
│ │ ├── timelines.php
│ │ ├── tiptap.php
│ │ ├── users/
│ │ │ └── profile.php
│ │ ├── validation.php
│ │ └── visibilities.php
│ └── vendor/
│ ├── backup/
│ │ ├── ar/
│ │ │ └── notifications.php
│ │ ├── ca/
│ │ │ └── notifications.php
│ │ ├── cs/
│ │ │ └── notifications.php
│ │ ├── da/
│ │ │ └── notifications.php
│ │ ├── de/
│ │ │ └── notifications.php
│ │ ├── en/
│ │ │ └── notifications.php
│ │ ├── es/
│ │ │ └── notifications.php
│ │ ├── fa/
│ │ │ └── notifications.php
│ │ ├── fi/
│ │ │ └── notifications.php
│ │ ├── fr/
│ │ │ └── notifications.php
│ │ ├── gl/
│ │ │ └── notifications.php
│ │ ├── hi/
│ │ │ └── notifications.php
│ │ ├── hr/
│ │ │ └── notifications.php
│ │ ├── id/
│ │ │ └── notifications.php
│ │ ├── it/
│ │ │ └── notifications.php
│ │ ├── ja/
│ │ │ └── notifications.php
│ │ ├── nl/
│ │ │ └── notifications.php
│ │ ├── no/
│ │ │ └── notifications.php
│ │ ├── pl/
│ │ │ └── notifications.php
│ │ ├── pt/
│ │ │ └── notifications.php
│ │ ├── pt-BR/
│ │ │ └── notifications.php
│ │ ├── ro/
│ │ │ └── notifications.php
│ │ ├── ru/
│ │ │ └── notifications.php
│ │ ├── sk/
│ │ │ └── notifications.php
│ │ ├── tr/
│ │ │ └── notifications.php
│ │ ├── uk/
│ │ │ └── notifications.php
│ │ ├── zh-CN/
│ │ │ └── notifications.php
│ │ └── zh-TW/
│ │ └── notifications.php
│ └── dnd5emonster/
│ ├── ca/
│ │ └── template.php
│ ├── cs/
│ │ └── template.php
│ ├── de/
│ │ └── template.php
│ ├── en/
│ │ └── template.php
│ ├── es/
│ │ └── template.php
│ ├── fr/
│ │ └── template.php
│ ├── gl/
│ │ └── template.php
│ ├── hu/
│ │ └── template.php
│ ├── it/
│ │ └── template.php
│ ├── pl/
│ │ └── template.php
│ ├── pt-BR/
│ │ └── template.php
│ ├── ru/
│ │ └── template.php
│ └── sk/
│ └── template.php
├── larastan.php
├── package.json
├── phpcs.xml
├── phpmd_ruleset.xml
├── phpstan.neon
├── phpunit.xml
├── pint.json
├── public/
│ ├── .well-known/
│ │ └── security.txt
│ ├── build/
│ │ ├── assets/
│ │ │ ├── Browser.vue_vue_type_script_setup_true_lang-DjY0tfEc.js
│ │ │ ├── GalleryDialog-B3Id-RLo.js
│ │ │ ├── GalleryDialog-SGgOgWve.css
│ │ │ ├── SourceEditor-BKF0zshA.css
│ │ │ ├── SourceEditor-CaEGRaAo.js
│ │ │ ├── Tiptap-B5LGKvdR.css
│ │ │ ├── Tiptap-Bd5ZGSft.js
│ │ │ ├── _commonjsHelpers-Cpj98o6Y.js
│ │ │ ├── _plugin-vue_export-helper-DlAUqK2U.js
│ │ │ ├── abilities-_1tR-hmN.js
│ │ │ ├── app-7Sr4fLAQ.css
│ │ │ ├── app-B8BXQiap.js
│ │ │ ├── app-CcekkIPy.css
│ │ │ ├── attributes-BgyqIZFe.js
│ │ │ ├── attributes-manager-Of4dtl9o.js
│ │ │ ├── auth-Bh9mDens.css
│ │ │ ├── auth-DX8SCiWG.js
│ │ │ ├── billing-CAEv3gKN.js
│ │ │ ├── calendar-9Uf0XYJF.js
│ │ │ ├── character-BYzNtBCs.js
│ │ │ ├── coloris-DsKOFKq5.js
│ │ │ ├── colours-Dh8441-n.js
│ │ │ ├── conversation-hoDojmhJ.js
│ │ │ ├── cookieconsent-DM0O5r9k.js
│ │ │ ├── cytoscape-cose-bilkent-DRrwnnKV.js
│ │ │ ├── cytoscape-panzoom-Del_Rz3u.js
│ │ │ ├── cytoscape.esm-BJ4qIETX.js
│ │ │ ├── dark-Pb_2oqsz.css
│ │ │ ├── dashboard-CsClHCyP.css
│ │ │ ├── dashboard-DzoSMhdl.js
│ │ │ ├── dialog-DkrH_pRQ.js
│ │ │ ├── explore-PT_Dl9lc.js
│ │ │ ├── family-tree-vue-BhAkMdmq.js
│ │ │ ├── front-BDaha8uH.js
│ │ │ ├── front-CZW4xdyL.css
│ │ │ ├── gallery-DqcxhMJm.js
│ │ │ ├── history-Bum1jYKg.js
│ │ │ ├── html2canvas.esm-DXEQVQnt.js
│ │ │ ├── import-CRZICNET.js
│ │ │ ├── index-Bajpoqb9.js
│ │ │ ├── index-D5GkNzM3.js
│ │ │ ├── index.es-MeewMCO3.js
│ │ │ ├── index.esm-DvuRQLEU.js
│ │ │ ├── jspdf.es.min-DI22nqbU.js
│ │ │ ├── map-v3-_JE1ac-e.js
│ │ │ ├── maps-7UR0tBUB.css
│ │ │ ├── midnight-DjmKO7Sj.css
│ │ │ ├── preload-helper-I4rgV-VL.js
│ │ │ ├── print-B43HD77n.css
│ │ │ ├── profile-D4XIj8wj.js
│ │ │ ├── purify.es-21m173o_.js
│ │ │ ├── recovery-DDbs8NlV.js
│ │ │ ├── relations-BhqWrOkS.css
│ │ │ ├── relations-DFy0TfK7.js
│ │ │ ├── settings-HvUxJh5V.js
│ │ │ ├── sortable.esm-DdTU3J9A.js
│ │ │ ├── story-CrmLJDK_.js
│ │ │ ├── subscription-BGjwpB-C.css
│ │ │ ├── subscription-CbUaAMac.js
│ │ │ ├── summernote-DpnuH_QU.js
│ │ │ ├── theme-builder-Cvbh2cpO.js
│ │ │ ├── tinymce-C7wRrakS.css
│ │ │ ├── tippy.esm-CnBRltuW.js
│ │ │ ├── tree-Dna4NG6v.css
│ │ │ ├── v-click-outside.umd-Cl-Y_A58.js
│ │ │ ├── vendor-DEuctmxo.css
│ │ │ ├── vendor-final--o6gRmZ3.js
│ │ │ ├── vendor-tiptap-D5xFoo7B.js
│ │ │ ├── vue-tippy.esm-browser-B_r0Ygiv.js
│ │ │ ├── web-C9wt4HvN.css
│ │ │ ├── web-CwwBh20P.js
│ │ │ └── whiteboards-CYwbHh4e.js
│ │ └── manifest.json
│ ├── css/
│ │ ├── bootstrap-summernote.css
│ │ ├── bootstrap.css
│ │ ├── bootstrap.css.br
│ │ └── bootstrap.min.css.br
│ ├── fonts/
│ │ └── roboto/
│ │ ├── OFL.txt
│ │ └── README.txt
│ ├── images/
│ │ └── favicon/
│ │ └── site.webmanifest
│ ├── index.php
│ ├── js/
│ │ ├── vendor.js
│ │ ├── vendor.js.LICENSE.txt
│ │ └── vendor.js.br
│ ├── main.js
│ ├── mix-manifest.json
│ ├── privacypolicy.html
│ └── vendor/
│ ├── binarytorch/
│ │ └── larecipe/
│ │ └── assets/
│ │ ├── css/
│ │ │ ├── app.css
│ │ │ ├── font-awesome-v4-shims.css
│ │ │ └── font-awesome.css
│ │ └── js/
│ │ └── app.js
│ ├── bootstrap/
│ │ ├── css/
│ │ │ ├── bootstrap-grid.css
│ │ │ ├── bootstrap-reboot.css
│ │ │ └── bootstrap.css
│ │ └── js/
│ │ ├── bootstrap.bundle.js
│ │ └── bootstrap.js
│ ├── bootstrap-switch/
│ │ ├── css/
│ │ │ ├── bootstrap2/
│ │ │ │ └── bootstrap-switch.css
│ │ │ └── bootstrap3/
│ │ │ └── bootstrap-switch.css
│ │ └── js/
│ │ └── bootstrap-switch.js
│ ├── codemirror/
│ │ ├── addon/
│ │ │ ├── comment/
│ │ │ │ ├── comment.js
│ │ │ │ └── continuecomment.js
│ │ │ ├── dialog/
│ │ │ │ ├── dialog.css
│ │ │ │ └── dialog.js
│ │ │ ├── display/
│ │ │ │ ├── autorefresh.js
│ │ │ │ ├── fullscreen.css
│ │ │ │ ├── fullscreen.js
│ │ │ │ ├── panel.js
│ │ │ │ ├── placeholder.js
│ │ │ │ └── rulers.js
│ │ │ ├── edit/
│ │ │ │ ├── closebrackets.js
│ │ │ │ ├── closetag.js
│ │ │ │ ├── continuelist.js
│ │ │ │ ├── matchbrackets.js
│ │ │ │ ├── matchtags.js
│ │ │ │ └── trailingspace.js
│ │ │ ├── fold/
│ │ │ │ ├── brace-fold.js
│ │ │ │ ├── comment-fold.js
│ │ │ │ ├── foldcode.js
│ │ │ │ ├── foldgutter.css
│ │ │ │ ├── foldgutter.js
│ │ │ │ ├── indent-fold.js
│ │ │ │ ├── markdown-fold.js
│ │ │ │ └── xml-fold.js
│ │ │ ├── hint/
│ │ │ │ ├── anyword-hint.js
│ │ │ │ ├── css-hint.js
│ │ │ │ ├── html-hint.js
│ │ │ │ ├── javascript-hint.js
│ │ │ │ ├── show-hint.css
│ │ │ │ ├── show-hint.js
│ │ │ │ ├── sql-hint.js
│ │ │ │ └── xml-hint.js
│ │ │ ├── lint/
│ │ │ │ ├── coffeescript-lint.js
│ │ │ │ ├── css-lint.js
│ │ │ │ ├── html-lint.js
│ │ │ │ ├── javascript-lint.js
│ │ │ │ ├── json-lint.js
│ │ │ │ ├── lint.css
│ │ │ │ ├── lint.js
│ │ │ │ └── yaml-lint.js
│ │ │ ├── merge/
│ │ │ │ ├── merge.css
│ │ │ │ └── merge.js
│ │ │ ├── mode/
│ │ │ │ ├── loadmode.js
│ │ │ │ ├── multiplex.js
│ │ │ │ ├── multiplex_test.js
│ │ │ │ ├── overlay.js
│ │ │ │ └── simple.js
│ │ │ ├── runmode/
│ │ │ │ ├── colorize.js
│ │ │ │ ├── runmode-standalone.js
│ │ │ │ ├── runmode.js
│ │ │ │ └── runmode.node.js
│ │ │ ├── scroll/
│ │ │ │ ├── annotatescrollbar.js
│ │ │ │ ├── scrollpastend.js
│ │ │ │ ├── simplescrollbars.css
│ │ │ │ └── simplescrollbars.js
│ │ │ ├── search/
│ │ │ │ ├── jump-to-line.js
│ │ │ │ ├── match-highlighter.js
│ │ │ │ ├── matchesonscrollbar.css
│ │ │ │ ├── matchesonscrollbar.js
│ │ │ │ ├── search.js
│ │ │ │ └── searchcursor.js
│ │ │ ├── selection/
│ │ │ │ ├── active-line.js
│ │ │ │ ├── mark-selection.js
│ │ │ │ └── selection-pointer.js
│ │ │ ├── tern/
│ │ │ │ ├── tern.css
│ │ │ │ ├── tern.js
│ │ │ │ └── worker.js
│ │ │ └── wrap/
│ │ │ └── hardwrap.js
│ │ ├── lib/
│ │ │ ├── codemirror.css
│ │ │ └── codemirror.js
│ │ ├── mode/
│ │ │ ├── css/
│ │ │ │ ├── css.js
│ │ │ │ ├── gss.html
│ │ │ │ ├── gss_test.js
│ │ │ │ ├── index.html
│ │ │ │ ├── less.html
│ │ │ │ ├── less_test.js
│ │ │ │ ├── scss.html
│ │ │ │ ├── scss_test.js
│ │ │ │ └── test.js
│ │ │ ├── htmlmixed/
│ │ │ │ ├── htmlmixed.js
│ │ │ │ └── index.html
│ │ │ └── xml/
│ │ │ ├── index.html
│ │ │ ├── test.js
│ │ │ └── xml.js
│ │ └── theme/
│ │ ├── 3024-day.css
│ │ ├── 3024-night.css
│ │ ├── abbott.css
│ │ ├── abcdef.css
│ │ ├── ambiance-mobile.css
│ │ ├── ambiance.css
│ │ ├── ayu-dark.css
│ │ ├── ayu-mirage.css
│ │ ├── base16-dark.css
│ │ ├── base16-light.css
│ │ ├── bespin.css
│ │ ├── blackboard.css
│ │ ├── cobalt.css
│ │ ├── colorforth.css
│ │ ├── darcula.css
│ │ ├── dracula.css
│ │ ├── duotone-dark.css
│ │ ├── duotone-light.css
│ │ ├── eclipse.css
│ │ ├── elegant.css
│ │ ├── erlang-dark.css
│ │ ├── gruvbox-dark.css
│ │ ├── hopscotch.css
│ │ ├── icecoder.css
│ │ ├── idea.css
│ │ ├── isotope.css
│ │ ├── juejin.css
│ │ ├── lesser-dark.css
│ │ ├── liquibyte.css
│ │ ├── lucario.css
│ │ ├── material-darker.css
│ │ ├── material-ocean.css
│ │ ├── material-palenight.css
│ │ ├── material.css
│ │ ├── mbo.css
│ │ ├── mdn-like.css
│ │ ├── midnight.css
│ │ ├── monokai.css
│ │ ├── moxer.css
│ │ ├── neat.css
│ │ ├── neo.css
│ │ ├── night.css
│ │ ├── nord.css
│ │ ├── oceanic-next.css
│ │ ├── panda-syntax.css
│ │ ├── paraiso-dark.css
│ │ ├── paraiso-light.css
│ │ ├── pastel-on-dark.css
│ │ ├── railscasts.css
│ │ ├── rubyblue.css
│ │ ├── seti.css
│ │ ├── shadowfox.css
│ │ ├── solarized.css
│ │ ├── ssms.css
│ │ ├── the-matrix.css
│ │ ├── tomorrow-night-bright.css
│ │ ├── tomorrow-night-eighties.css
│ │ ├── ttcn.css
│ │ ├── twilight.css
│ │ ├── vibrant-ink.css
│ │ ├── xq-dark.css
│ │ ├── xq-light.css
│ │ ├── yeti.css
│ │ ├── yonce.css
│ │ └── zenburn.css
│ ├── dnd5emonster/
│ │ ├── css/
│ │ │ └── template.css
│ │ └── js/
│ │ └── template.js
│ ├── fontawesome/
│ │ └── 6.0.0/
│ │ ├── LICENSE.txt
│ │ ├── css/
│ │ │ ├── all.css
│ │ │ ├── brands.css
│ │ │ ├── fontawesome.css
│ │ │ ├── regular.css
│ │ │ ├── solid.css
│ │ │ ├── svg-with-js.css
│ │ │ ├── v4-font-face.css
│ │ │ ├── v4-shims.css
│ │ │ └── v5-font-face.css
│ │ ├── js/
│ │ │ ├── all.js
│ │ │ ├── brands.js
│ │ │ ├── conflict-detection.js
│ │ │ ├── fontawesome.js
│ │ │ ├── regular.js
│ │ │ ├── solid.js
│ │ │ └── v4-shims.js
│ │ ├── less/
│ │ │ ├── _animated.less
│ │ │ ├── _bordered-pulled.less
│ │ │ ├── _core.less
│ │ │ ├── _fixed-width.less
│ │ │ ├── _icons.less
│ │ │ ├── _list.less
│ │ │ ├── _mixins.less
│ │ │ ├── _rotated-flipped.less
│ │ │ ├── _screen-reader.less
│ │ │ ├── _shims.less
│ │ │ ├── _sizing.less
│ │ │ ├── _stacked.less
│ │ │ ├── _variables.less
│ │ │ ├── brands.less
│ │ │ ├── fontawesome.less
│ │ │ ├── regular.less
│ │ │ ├── solid.less
│ │ │ └── v4-shims.less
│ │ └── scss/
│ │ ├── _animated.scss
│ │ ├── _bordered-pulled.scss
│ │ ├── _core.scss
│ │ ├── _fixed-width.scss
│ │ ├── _functions.scss
│ │ ├── _icons.scss
│ │ ├── _list.scss
│ │ ├── _mixins.scss
│ │ ├── _rotated-flipped.scss
│ │ ├── _screen-reader.scss
│ │ ├── _shims.scss
│ │ ├── _sizing.scss
│ │ ├── _stacked.scss
│ │ ├── _variables.scss
│ │ ├── brands.scss
│ │ ├── fontawesome.scss
│ │ ├── regular.scss
│ │ ├── solid.scss
│ │ └── v4-shims.scss
│ ├── laravel-translation-manager/
│ │ ├── css/
│ │ │ ├── index.css
│ │ │ └── translations.css
│ │ └── js/
│ │ ├── index.js
│ │ ├── inflection.js
│ │ ├── rails.async.js
│ │ ├── rails.js
│ │ ├── translations.js
│ │ ├── translations_page.js
│ │ └── xregexp-all.js
│ ├── leaflet/
│ │ ├── leaflet-polyline-measure.js
│ │ ├── leaflet.editable.js
│ │ ├── leaflet.layerstree.css
│ │ ├── leaflet.layerstree.js
│ │ ├── leaflet.markercluster.js
│ │ ├── leaflet.markercluster.layersupport.js
│ │ ├── leaflet.path.drag.js
│ │ ├── leaflet.ruler-kanka.js
│ │ ├── leaflet.ruler.js
│ │ ├── leaflet.zoomcss.js
│ │ └── leaflet.zoomdisplay.js
│ ├── summernote/
│ │ ├── 0.9.1/
│ │ │ ├── font/
│ │ │ │ └── summernote.hash
│ │ │ ├── lang/
│ │ │ │ ├── summernote-ar-AR.js
│ │ │ │ ├── summernote-az-AZ.js
│ │ │ │ ├── summernote-bg-BG.js
│ │ │ │ ├── summernote-bn-BD.js
│ │ │ │ ├── summernote-ca-ES.js
│ │ │ │ ├── summernote-cs-CZ.js
│ │ │ │ ├── summernote-da-DK.js
│ │ │ │ ├── summernote-de-CH.js
│ │ │ │ ├── summernote-de-DE.js
│ │ │ │ ├── summernote-el-GR.js
│ │ │ │ ├── summernote-en-US.js
│ │ │ │ ├── summernote-es-ES.js
│ │ │ │ ├── summernote-es-EU.js
│ │ │ │ ├── summernote-fa-IR.js
│ │ │ │ ├── summernote-fi-FI.js
│ │ │ │ ├── summernote-fr-FR.js
│ │ │ │ ├── summernote-gl-ES.js
│ │ │ │ ├── summernote-he-IL.js
│ │ │ │ ├── summernote-hr-HR.js
│ │ │ │ ├── summernote-hu-HU.js
│ │ │ │ ├── summernote-id-ID.js
│ │ │ │ ├── summernote-it-IT.js
│ │ │ │ ├── summernote-ja-JP.js
│ │ │ │ ├── summernote-ko-KR.js
│ │ │ │ ├── summernote-lt-LT.js
│ │ │ │ ├── summernote-lt-LV.js
│ │ │ │ ├── summernote-mn-MN.js
│ │ │ │ ├── summernote-nb-NO.js
│ │ │ │ ├── summernote-nl-NL.js
│ │ │ │ ├── summernote-pl-PL.js
│ │ │ │ ├── summernote-pt-BR.js
│ │ │ │ ├── summernote-pt-PT.js
│ │ │ │ ├── summernote-ro-RO.js
│ │ │ │ ├── summernote-ru-RU.js
│ │ │ │ ├── summernote-sk-SK.js
│ │ │ │ ├── summernote-sl-SI.js
│ │ │ │ ├── summernote-sr-RS-Latin.js
│ │ │ │ ├── summernote-sr-RS.js
│ │ │ │ ├── summernote-sv-SE.js
│ │ │ │ ├── summernote-ta-IN.js
│ │ │ │ ├── summernote-th-TH.js
│ │ │ │ ├── summernote-tr-TR.js
│ │ │ │ ├── summernote-uk-UA.js
│ │ │ │ ├── summernote-uz-UZ.js
│ │ │ │ ├── summernote-vi-VN.js
│ │ │ │ ├── summernote-zh-CN.js
│ │ │ │ └── summernote-zh-TW.js
│ │ │ ├── plugin/
│ │ │ │ ├── databasic/
│ │ │ │ │ ├── summernote-ext-databasic.css
│ │ │ │ │ └── summernote-ext-databasic.js
│ │ │ │ ├── hello/
│ │ │ │ │ └── summernote-ext-hello.js
│ │ │ │ └── specialchars/
│ │ │ │ └── summernote-ext-specialchars.js
│ │ │ ├── summernote-bs4.css
│ │ │ ├── summernote-bs4.js
│ │ │ ├── summernote-bs5.css
│ │ │ ├── summernote-bs5.js
│ │ │ ├── summernote-lite.css
│ │ │ ├── summernote-lite.js
│ │ │ ├── summernote.css
│ │ │ └── summernote.js
│ │ ├── lang/
│ │ │ ├── summernote-ar-AR.js
│ │ │ ├── summernote-ar-AR.min.js.LICENSE.txt
│ │ │ ├── summernote-az-AZ.js
│ │ │ ├── summernote-az-AZ.min.js.LICENSE.txt
│ │ │ ├── summernote-bg-BG.js
│ │ │ ├── summernote-bg-BG.min.js.LICENSE.txt
│ │ │ ├── summernote-ca-ES.js
│ │ │ ├── summernote-ca-ES.min.js.LICENSE.txt
│ │ │ ├── summernote-cs-CZ.js
│ │ │ ├── summernote-cs-CZ.min.js.LICENSE.txt
│ │ │ ├── summernote-da-DK.js
│ │ │ ├── summernote-da-DK.min.js.LICENSE.txt
│ │ │ ├── summernote-de-DE.js
│ │ │ ├── summernote-de-DE.min.js.LICENSE.txt
│ │ │ ├── summernote-el-GR.js
│ │ │ ├── summernote-el-GR.min.js.LICENSE.txt
│ │ │ ├── summernote-es-ES.js
│ │ │ ├── summernote-es-ES.min.js.LICENSE.txt
│ │ │ ├── summernote-es-EU.js
│ │ │ ├── summernote-es-EU.min.js.LICENSE.txt
│ │ │ ├── summernote-fa-IR.js
│ │ │ ├── summernote-fa-IR.min.js.LICENSE.txt
│ │ │ ├── summernote-fi-FI.js
│ │ │ ├── summernote-fi-FI.min.js.LICENSE.txt
│ │ │ ├── summernote-fr-FR.js
│ │ │ ├── summernote-fr-FR.min.js.LICENSE.txt
│ │ │ ├── summernote-gl-ES.js
│ │ │ ├── summernote-gl-ES.min.js.LICENSE.txt
│ │ │ ├── summernote-he-IL.js
│ │ │ ├── summernote-he-IL.min.js.LICENSE.txt
│ │ │ ├── summernote-hr-HR.js
│ │ │ ├── summernote-hr-HR.min.js.LICENSE.txt
│ │ │ ├── summernote-hu-HU.js
│ │ │ ├── summernote-hu-HU.min.js.LICENSE.txt
│ │ │ ├── summernote-id-ID.js
│ │ │ ├── summernote-id-ID.min.js.LICENSE.txt
│ │ │ ├── summernote-it-IT.js
│ │ │ ├── summernote-it-IT.min.js.LICENSE.txt
│ │ │ ├── summernote-ja-JP.js
│ │ │ ├── summernote-ja-JP.min.js.LICENSE.txt
│ │ │ ├── summernote-ko-KR.js
│ │ │ ├── summernote-ko-KR.min.js.LICENSE.txt
│ │ │ ├── summernote-lt-LT.js
│ │ │ ├── summernote-lt-LT.min.js.LICENSE.txt
│ │ │ ├── summernote-lt-LV.js
│ │ │ ├── summernote-lt-LV.min.js.LICENSE.txt
│ │ │ ├── summernote-mn-MN.js
│ │ │ ├── summernote-mn-MN.min.js.LICENSE.txt
│ │ │ ├── summernote-nb-NO.js
│ │ │ ├── summernote-nb-NO.min.js.LICENSE.txt
│ │ │ ├── summernote-nl-NL.js
│ │ │ ├── summernote-nl-NL.min.js.LICENSE.txt
│ │ │ ├── summernote-pl-PL.js
│ │ │ ├── summernote-pl-PL.min.js.LICENSE.txt
│ │ │ ├── summernote-pt-BR.js
│ │ │ ├── summernote-pt-BR.min.js.LICENSE.txt
│ │ │ ├── summernote-pt-PT.js
│ │ │ ├── summernote-pt-PT.min.js.LICENSE.txt
│ │ │ ├── summernote-ro-RO.js
│ │ │ ├── summernote-ro-RO.min.js.LICENSE.txt
│ │ │ ├── summernote-ru-RU.js
│ │ │ ├── summernote-ru-RU.min.js.LICENSE.txt
│ │ │ ├── summernote-sk-SK.js
│ │ │ ├── summernote-sk-SK.min.js.LICENSE.txt
│ │ │ ├── summernote-sl-SI.js
│ │ │ ├── summernote-sl-SI.min.js.LICENSE.txt
│ │ │ ├── summernote-sr-RS-Latin.js
│ │ │ ├── summernote-sr-RS-Latin.min.js.LICENSE.txt
│ │ │ ├── summernote-sr-RS.js
│ │ │ ├── summernote-sr-RS.min.js.LICENSE.txt
│ │ │ ├── summernote-sv-SE.js
│ │ │ ├── summernote-sv-SE.min.js.LICENSE.txt
│ │ │ ├── summernote-ta-IN.js
│ │ │ ├── summernote-ta-IN.min.js.LICENSE.txt
│ │ │ ├── summernote-th-TH.js
│ │ │ ├── summernote-th-TH.min.js.LICENSE.txt
│ │ │ ├── summernote-tr-TR.js
│ │ │ ├── summernote-tr-TR.min.js.LICENSE.txt
│ │ │ ├── summernote-uk-UA.js
│ │ │ ├── summernote-uk-UA.min.js.LICENSE.txt
│ │ │ ├── summernote-uz-UZ.js
│ │ │ ├── summernote-uz-UZ.min.js.LICENSE.txt
│ │ │ ├── summernote-vi-VN.js
│ │ │ ├── summernote-vi-VN.min.js.LICENSE.txt
│ │ │ ├── summernote-zh-CN.js
│ │ │ ├── summernote-zh-CN.min.js.LICENSE.txt
│ │ │ ├── summernote-zh-TW.js
│ │ │ └── summernote-zh-TW.min.js.LICENSE.txt
│ │ ├── plugin/
│ │ │ ├── databasic/
│ │ │ │ ├── summernote-ext-databasic.css
│ │ │ │ └── summernote-ext-databasic.js
│ │ │ ├── embed/
│ │ │ │ └── summernote-embed-plugin.js
│ │ │ ├── hello/
│ │ │ │ └── summernote-ext-hello.js
│ │ │ ├── rtl/
│ │ │ │ └── summernote-ext-rtl.js
│ │ │ ├── specialchars/
│ │ │ │ └── summernote-ext-specialchars.js
│ │ │ ├── summernote-aroba-kanka/
│ │ │ │ └── summernote-aroba.js
│ │ │ ├── summernote-image-attribute.js
│ │ │ ├── summernote-table-ext.js
│ │ │ ├── summernote-table-headers/
│ │ │ │ ├── Example/
│ │ │ │ │ └── example.html
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README.md
│ │ │ │ └── summernote-table-headers.js
│ │ │ ├── summernote-table-styles/
│ │ │ │ ├── Example/
│ │ │ │ │ └── example.html
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README.md
│ │ │ │ └── summernote-table-styles.js
│ │ │ ├── summernote-toc-kanka/
│ │ │ │ └── summernote-toc.js
│ │ │ └── summernote-toc.js
│ │ ├── summernote-bs4.css
│ │ ├── summernote-bs4.js
│ │ ├── summernote-bs4.min.js.LICENSE.txt
│ │ ├── summernote-lite.css
│ │ ├── summernote-lite.js
│ │ ├── summernote-lite.min.js.LICENSE.txt
│ │ ├── summernote.css
│ │ ├── summernote.js
│ │ └── summernote.min.js.LICENSE.txt
│ └── telescope/
│ ├── app-dark.css
│ ├── app.css
│ ├── app.js
│ └── mix-manifest.json
├── resources/
│ ├── api-docs/
│ │ └── 1.0/
│ │ ├── abilities.md
│ │ ├── archives.md
│ │ ├── attribute-templates.md
│ │ ├── bookmarks.md
│ │ ├── calendar-weathers.md
│ │ ├── calendars.md
│ │ ├── campaigns/
│ │ │ ├── applications.md
│ │ │ ├── categories.md
│ │ │ ├── dashboard-widgets.md
│ │ │ ├── default-thumbnails.md
│ │ │ ├── images.md
│ │ │ ├── members.md
│ │ │ ├── modules.md
│ │ │ ├── roles.md
│ │ │ ├── statuses.md
│ │ │ └── styles.md
│ │ ├── campaigns.md
│ │ ├── characters.md
│ │ ├── conversations.md
│ │ ├── creatures.md
│ │ ├── dice-rolls.md
│ │ ├── entities/
│ │ │ ├── attributes.md
│ │ │ ├── connections.md
│ │ │ ├── entity-abilities.md
│ │ │ ├── entity-aliases.md
│ │ │ ├── entity-assets.md
│ │ │ ├── entity-files.md
│ │ │ ├── entity-image.md
│ │ │ ├── entity-inventory.md
│ │ │ ├── entity-links.md
│ │ │ ├── entity-mentions.md
│ │ │ ├── entity-permissions.md
│ │ │ ├── entity-tags.md
│ │ │ ├── entity-types.md
│ │ │ ├── posts.md
│ │ │ ├── reminders.md
│ │ │ └── templates.md
│ │ ├── entities.md
│ │ ├── events.md
│ │ ├── families.md
│ │ ├── index.md
│ │ ├── items.md
│ │ ├── journals.md
│ │ ├── locations.md
│ │ ├── map_groups.md
│ │ ├── map_layers.md
│ │ ├── map_markers.md
│ │ ├── maps.md
│ │ ├── misc/
│ │ │ ├── filters.md
│ │ │ ├── last-sync.md
│ │ │ ├── pagination.md
│ │ │ ├── permissions-test.md
│ │ │ └── visibilities.md
│ │ ├── notes.md
│ │ ├── organisation-members.md
│ │ ├── organisations.md
│ │ ├── overview.md
│ │ ├── post-layout.md
│ │ ├── profile.md
│ │ ├── quests.md
│ │ ├── races.md
│ │ ├── relations.md
│ │ ├── search.md
│ │ ├── setup.md
│ │ ├── tags.md
│ │ ├── timeline-elements.md
│ │ ├── timeline-eras.md
│ │ ├── timelines.md
│ │ └── troubleshooting.md
│ ├── assets/
│ │ └── components/
│ │ └── rpg/
│ │ └── scss/
│ │ ├── .scss-lint.yml
│ │ ├── _bordered-pulled.scss
│ │ ├── _core.scss
│ │ ├── _fixed-width.scss
│ │ ├── _icons.scss
│ │ ├── _larger.scss
│ │ ├── _list.scss
│ │ ├── _mixins.scss
│ │ ├── _path.scss
│ │ ├── _rotated-flipped.scss
│ │ ├── _spinning.scss
│ │ ├── _stacked.scss
│ │ ├── _variables.scss
│ │ └── rpg-awesome.scss
│ ├── css/
│ │ ├── alerts.css
│ │ ├── app.css
│ │ ├── attributes/
│ │ │ └── attributes.css
│ │ ├── auth.css
│ │ ├── badge.css
│ │ ├── buttons.css
│ │ ├── calendar.css
│ │ ├── campaign.css
│ │ ├── code.css
│ │ ├── dashboard.css
│ │ ├── entity.css
│ │ ├── families/
│ │ │ └── tree.css
│ │ ├── freyja/
│ │ │ ├── freyja.css
│ │ │ ├── header.css
│ │ │ └── sidebar.css
│ │ ├── front.css
│ │ ├── html/
│ │ │ ├── dialog.css
│ │ │ ├── dl.css
│ │ │ ├── summary.css
│ │ │ └── table.css
│ │ ├── maps/
│ │ │ ├── leaflet.zoomdisplay.css
│ │ │ └── maps.css
│ │ ├── mobile.css
│ │ ├── premium.css
│ │ ├── print/
│ │ │ ├── general.css
│ │ │ └── print.css
│ │ ├── quest.css
│ │ ├── quick-creator.css
│ │ ├── range.css
│ │ ├── relations.css
│ │ ├── sortable.css
│ │ ├── subscription.css
│ │ ├── tabs.css
│ │ ├── themes/
│ │ │ ├── base.css
│ │ │ ├── colour.css
│ │ │ ├── dark.css
│ │ │ ├── light.css
│ │ │ └── midnight.css
│ │ ├── timeline.css
│ │ ├── toast.css
│ │ ├── toggle.css
│ │ ├── tooltip.css
│ │ ├── typography.css
│ │ ├── vendor.css
│ │ └── vendors/
│ │ ├── adminlte.css
│ │ ├── editor.css
│ │ └── tinymce.css
│ ├── js/
│ │ ├── abilities.js
│ │ ├── ads.js
│ │ ├── animations.js
│ │ ├── app.js
│ │ ├── attributes-manager.js
│ │ ├── attributes.js
│ │ ├── auth.js
│ │ ├── banner.js
│ │ ├── billing.js
│ │ ├── bookmarks.js
│ │ ├── calendar.js
│ │ ├── campaign.js
│ │ ├── campaigns/
│ │ │ ├── import.js
│ │ │ └── theme-builder.js
│ │ ├── clipboard.js
│ │ ├── components/
│ │ │ ├── Dropdown.vue
│ │ │ ├── abilities/
│ │ │ │ ├── Abilities.vue
│ │ │ │ ├── Ability.vue
│ │ │ │ └── Parent.vue
│ │ │ ├── attributes/
│ │ │ │ ├── Attribute.vue
│ │ │ │ ├── Form.vue
│ │ │ │ ├── Manager.vue
│ │ │ │ └── MentionField.vue
│ │ │ ├── connections/
│ │ │ │ └── Web.vue
│ │ │ ├── conversation/
│ │ │ │ ├── Conversation.vue
│ │ │ │ ├── Form.vue
│ │ │ │ ├── Message.vue
│ │ │ │ └── Messages.vue
│ │ │ ├── delete-confirm.js
│ │ │ ├── families/
│ │ │ │ ├── ChildrenLine.vue
│ │ │ │ ├── FamilyChildren.vue
│ │ │ │ ├── FamilyEntity.vue
│ │ │ │ ├── FamilyNode.vue
│ │ │ │ ├── FamilyParentChildrenLine.vue
│ │ │ │ ├── FamilyRelation.vue
│ │ │ │ ├── FamilyRelations.vue
│ │ │ │ ├── FamilyTree.vue
│ │ │ │ └── RelationLine.vue
│ │ │ ├── fields/
│ │ │ │ ├── AliasPill.vue
│ │ │ │ ├── EntityName.vue
│ │ │ │ └── SimilarEntityAlert.vue
│ │ │ ├── icons/
│ │ │ │ └── GridSvg.vue
│ │ │ ├── layout/
│ │ │ │ ├── Campaign.vue
│ │ │ │ ├── Lookup/
│ │ │ │ │ ├── EntityPreview.vue
│ │ │ │ │ ├── LookupEntity.vue
│ │ │ │ │ └── LookupPage.vue
│ │ │ │ ├── NavSearch.vue
│ │ │ │ ├── NavSwitcher.vue
│ │ │ │ ├── NavToggler.vue
│ │ │ │ ├── Notification.vue
│ │ │ │ └── Release.vue
│ │ │ ├── select2.js
│ │ │ ├── subscription/
│ │ │ │ └── BillingManagement.vue
│ │ │ └── whiteboards/
│ │ │ ├── Entity.vue
│ │ │ ├── EntitySearch.vue
│ │ │ ├── Reset.vue
│ │ │ ├── Settings.vue
│ │ │ └── Whiteboard.vue
│ │ ├── composables/
│ │ │ └── useEntitySimilarity.js
│ │ ├── connections/
│ │ │ └── web.js
│ │ ├── conversation.js
│ │ ├── cookieconsent.js
│ │ ├── crud.js
│ │ ├── dashboard.js
│ │ ├── dashboards/
│ │ │ ├── onboarding/
│ │ │ │ ├── Onboarding.vue
│ │ │ │ └── onboarding.js
│ │ │ └── widgets/
│ │ │ └── getting-started/
│ │ │ └── GettingStarted.vue
│ │ ├── datagrids.js
│ │ ├── datagrids2.js
│ │ ├── echo.js
│ │ ├── editors/
│ │ │ ├── summernote.js
│ │ │ └── tiptap/
│ │ │ ├── SourceEditor.vue
│ │ │ ├── Tiptap.vue
│ │ │ ├── bubblemenus/
│ │ │ │ ├── ColorPicker.vue
│ │ │ │ ├── ImageBubbleMenu.vue
│ │ │ │ ├── LinkBubbleMenu.vue
│ │ │ │ ├── MentionBubbleMenu.vue
│ │ │ │ ├── TableBubbleMenu.vue
│ │ │ │ └── TextBubbleMenu.vue
│ │ │ ├── extensions/
│ │ │ │ ├── CustomHeading.ts
│ │ │ │ ├── CustomImage.ts
│ │ │ │ ├── Details.ts
│ │ │ │ ├── DetailsWrapper.vue
│ │ │ │ ├── Div.ts
│ │ │ │ ├── Iframe.ts
│ │ │ │ ├── gallery/
│ │ │ │ │ ├── Gallery.ts
│ │ │ │ │ └── GalleryDialog.vue
│ │ │ │ ├── images/
│ │ │ │ │ ├── Image.ts
│ │ │ │ │ └── Images.vue
│ │ │ │ ├── mentions/
│ │ │ │ │ ├── Mention.ts
│ │ │ │ │ ├── MentionList.vue
│ │ │ │ │ ├── MentionParser.ts
│ │ │ │ │ └── suggestion.ts
│ │ │ │ ├── slashcommand/
│ │ │ │ │ ├── SlashCommand.ts
│ │ │ │ │ ├── SlashCommandList.vue
│ │ │ │ │ └── suggestion.ts
│ │ │ │ └── table/
│ │ │ │ ├── CustomTableCell.ts
│ │ │ │ ├── CustomTableHeader.ts
│ │ │ │ └── TableWithControls.ts
│ │ │ ├── index.js
│ │ │ ├── toolbar/
│ │ │ │ └── Button.vue
│ │ │ └── utils.ts
│ │ ├── entities/
│ │ │ ├── EntityAdSlot.vue
│ │ │ ├── EntityCard.vue
│ │ │ ├── EntityGrid.vue
│ │ │ ├── EntityListing.vue
│ │ │ ├── EntityRow.vue
│ │ │ ├── EntityTable.vue
│ │ │ ├── composables/
│ │ │ │ ├── useBulkActions.ts
│ │ │ │ ├── useColumns.ts
│ │ │ │ ├── useEntityApi.ts
│ │ │ │ ├── useLayout.ts
│ │ │ │ ├── useLongPress.ts
│ │ │ │ ├── useNesting.ts
│ │ │ │ ├── useOrdering.ts
│ │ │ │ └── usePerPage.ts
│ │ │ └── explore.js
│ │ ├── entities.js
│ │ ├── events.js
│ │ ├── family-tree-vue.js
│ │ ├── forms/
│ │ │ ├── calendar-date.js
│ │ │ ├── calendar.js
│ │ │ ├── character.js
│ │ │ └── entity-name.js
│ │ ├── front.js
│ │ ├── gallery/
│ │ │ ├── Browser.vue
│ │ │ ├── File.vue
│ │ │ ├── Gallery.vue
│ │ │ ├── Preview.vue
│ │ │ ├── Selection.vue
│ │ │ ├── gallery.js
│ │ │ └── selection.js
│ │ ├── header.js
│ │ ├── history.js
│ │ ├── keep-alive.js
│ │ ├── keyboard.js
│ │ ├── location/
│ │ │ └── map-v3.js
│ │ ├── maintenance.js
│ │ ├── members.js
│ │ ├── post.js
│ │ ├── profile.js
│ │ ├── quick-creator.js
│ │ ├── recovery/
│ │ │ ├── Element.vue
│ │ │ ├── Recovery.vue
│ │ │ └── recovery.js
│ │ ├── relations.js
│ │ ├── settings.js
│ │ ├── share.js
│ │ ├── story.js
│ │ ├── subscription.js
│ │ ├── tags.js
│ │ ├── timelines.js
│ │ ├── toast.js
│ │ ├── utility/
│ │ │ ├── CampaignShareModal.vue
│ │ │ ├── EntityShareModal.vue
│ │ │ ├── colour-picker.js
│ │ │ ├── colours.ts
│ │ │ ├── dialog.js
│ │ │ ├── formError.js
│ │ │ ├── sortable.js
│ │ │ └── tippy.js
│ │ ├── vendor-final.js
│ │ ├── vendor.js
│ │ ├── visibility-picker.js
│ │ ├── webhooks.js
│ │ └── whiteboards.js
│ ├── vendor/
│ │ └── tinymce/
│ │ ├── langs/
│ │ │ ├── ca.js
│ │ │ ├── de.js
│ │ │ ├── es.js
│ │ │ ├── fr.js
│ │ │ ├── he.js
│ │ │ ├── hr.js
│ │ │ ├── hu.js
│ │ │ ├── it.js
│ │ │ ├── nl.js
│ │ │ ├── pt-BR.js
│ │ │ ├── readme.md
│ │ │ ├── ru.js
│ │ │ └── sk.js
│ │ └── plugins/
│ │ └── mention/
│ │ ├── .gitignore
│ │ ├── .jshintrc
│ │ ├── .travis.yml
│ │ ├── README.md
│ │ ├── bower.json
│ │ ├── css/
│ │ │ ├── autocomplete.css
│ │ │ └── rte-content.css
│ │ ├── examples/
│ │ │ └── commonjs/
│ │ │ ├── .gitignore
│ │ │ ├── index.html
│ │ │ ├── main.js
│ │ │ ├── package.json
│ │ │ └── webpack.config.js
│ │ ├── gulpfile.js
│ │ ├── mention/
│ │ │ └── plugin.js
│ │ ├── package.json
│ │ ├── plugin.js
│ │ └── tests/
│ │ ├── test_mention.js
│ │ └── test_runner.html
│ └── views/
│ ├── abilities/
│ │ ├── abilities.blade.php
│ │ ├── entities/
│ │ │ ├── _form.blade.php
│ │ │ ├── actions/
│ │ │ │ └── delete.blade.php
│ │ │ └── create.blade.php
│ │ ├── entities.blade.php
│ │ ├── form/
│ │ │ └── _entry.blade.php
│ │ ├── panels/
│ │ │ ├── abilities.blade.php
│ │ │ └── entities.blade.php
│ │ └── show.blade.php
│ ├── account/
│ │ ├── billing/
│ │ │ └── information/
│ │ │ ├── _form.blade.php
│ │ │ └── form.blade.php
│ │ ├── email/
│ │ │ ├── _form.blade.php
│ │ │ └── form.blade.php
│ │ ├── password/
│ │ │ ├── _form.blade.php
│ │ │ └── form.blade.php
│ │ └── social/
│ │ └── form.blade.php
│ ├── ads/
│ │ ├── anchor.blade.php
│ │ ├── cta.blade.php
│ │ ├── inline.blade.php
│ │ ├── nitro/
│ │ │ └── styles.blade.php
│ │ ├── siderail_left.blade.php
│ │ ├── siderail_right.blade.php
│ │ ├── table.blade.php
│ │ ├── top.blade.php
│ │ └── video.blade.php
│ ├── attribute_templates/
│ │ ├── datagrid.blade.php
│ │ ├── form/
│ │ │ └── _entry.blade.php
│ │ └── show.blade.php
│ ├── auth/
│ │ ├── login.blade.php
│ │ ├── otp.blade.php
│ │ ├── passwords/
│ │ │ ├── confirm.blade.php
│ │ │ ├── email.blade.php
│ │ │ └── reset.blade.php
│ │ └── register.blade.php
│ ├── billing/
│ │ ├── history.blade.php
│ │ └── payment-method.blade.php
│ ├── bookmarks/
│ │ ├── datagrid.blade.php
│ │ ├── forms/
│ │ │ ├── _dashboard.blade.php
│ │ │ ├── _entity.blade.php
│ │ │ ├── _entry.blade.php
│ │ │ ├── _random.blade.php
│ │ │ ├── _type.blade.php
│ │ │ ├── create.blade.php
│ │ │ └── edit.blade.php
│ │ └── reorder.blade.php
│ ├── calendars/
│ │ ├── _calendar.blade.php
│ │ ├── _day.blade.php
│ │ ├── _intercalary.blade.php
│ │ ├── _week.blade.php
│ │ ├── events.blade.php
│ │ ├── form/
│ │ │ ├── _calendar.blade.php
│ │ │ ├── _entry.blade.php
│ │ │ ├── _months.blade.php
│ │ │ ├── _moons.blade.php
│ │ │ ├── _panes.blade.php
│ │ │ ├── _seasons.blade.php
│ │ │ ├── _tabs.blade.php
│ │ │ └── _weeks.blade.php
│ │ ├── panels/
│ │ │ └── events.blade.php
│ │ ├── reminders/
│ │ │ ├── _entity_form.blade.php
│ │ │ ├── _form.blade.php
│ │ │ ├── _subform.blade.php
│ │ │ ├── create.blade.php
│ │ │ ├── create_from_entity.blade.php
│ │ │ └── edit.blade.php
│ │ ├── show.blade.php
│ │ ├── weather/
│ │ │ ├── _form.blade.php
│ │ │ ├── create.blade.php
│ │ │ └── edit.blade.php
│ │ └── year-switcher/
│ │ └── _footer.blade.php
│ ├── campaigns/
│ │ ├── _overview.blade.php
│ │ ├── achievements/
│ │ │ ├── _finished.blade.php
│ │ │ ├── _locked.blade.php
│ │ │ └── index.blade.php
│ │ ├── applications/
│ │ │ ├── _apply.blade.php
│ │ │ ├── _list.blade.php
│ │ │ ├── _requirements.blade.php
│ │ │ ├── _toggle.blade.php
│ │ │ ├── _toggle_form.blade.php
│ │ │ ├── _view.blade.php
│ │ │ ├── apply.blade.php
│ │ │ ├── dashboard_widget.blade.php
│ │ │ ├── edit.blade.php
│ │ │ ├── index.blade.php
│ │ │ ├── setup.blade.php
│ │ │ ├── show.blade.php
│ │ │ └── view.blade.php
│ │ ├── default-images/
│ │ │ ├── _form.blade.php
│ │ │ ├── _thumbnail.blade.php
│ │ │ ├── create.blade.php
│ │ │ └── index.blade.php
│ │ ├── defaults/
│ │ │ └── index.blade.php
│ │ ├── delete.blade.php
│ │ ├── entity-types/
│ │ │ ├── _actions.blade.php
│ │ │ ├── _form.blade.php
│ │ │ ├── box/
│ │ │ │ ├── custom.blade.php
│ │ │ │ ├── default.blade.php
│ │ │ │ └── new.blade.php
│ │ │ ├── confirm.blade.php
│ │ │ ├── create.blade.php
│ │ │ ├── edit.blade.php
│ │ │ ├── max-reached.blade.php
│ │ │ └── not-premium.blade.php
│ │ ├── export.blade.php
│ │ ├── forms/
│ │ │ ├── _tabs.blade.php
│ │ │ ├── _visibility.blade.php
│ │ │ ├── create.blade.php
│ │ │ ├── dashboard-header/
│ │ │ │ ├── _form.blade.php
│ │ │ │ └── edit.blade.php
│ │ │ ├── edit.blade.php
│ │ │ ├── modals/
│ │ │ │ ├── _image.blade.php
│ │ │ │ ├── _visibility-form.blade.php
│ │ │ │ ├── image.blade.php
│ │ │ │ └── visibility.blade.php
│ │ │ ├── panes/
│ │ │ │ ├── _discovery.blade.php
│ │ │ │ ├── dashboard.blade.php
│ │ │ │ ├── entry.blade.php
│ │ │ │ ├── public.blade.php
│ │ │ │ └── ui.blade.php
│ │ │ └── standard.blade.php
│ │ ├── import/
│ │ │ ├── index.blade.php
│ │ │ └── process-csv.blade.php
│ │ ├── invites/
│ │ │ ├── _form.blade.php
│ │ │ └── create.blade.php
│ │ ├── leave/
│ │ │ ├── _actions.blade.php
│ │ │ └── _body.blade.php
│ │ ├── leave.blade.php
│ │ ├── logs/
│ │ │ ├── _list.blade.php
│ │ │ └── index.blade.php
│ │ ├── markdown.blade.php
│ │ ├── members/
│ │ │ ├── _form.blade.php
│ │ │ ├── _invites.blade.php
│ │ │ ├── delete.blade.php
│ │ │ ├── index.blade.php
│ │ │ └── update.blade.php
│ │ ├── modules/
│ │ │ ├── _custom.blade.php
│ │ │ ├── _default.blade.php
│ │ │ ├── _features.blade.php
│ │ │ ├── _form.blade.php
│ │ │ ├── box.blade.php
│ │ │ ├── edit.blade.php
│ │ │ ├── index.blade.php
│ │ │ └── not-premium.blade.php
│ │ ├── plugins/
│ │ │ ├── confirm.blade.php
│ │ │ ├── index.blade.php
│ │ │ └── info.blade.php
│ │ ├── plugins.blade.php
│ │ ├── recovery/
│ │ │ └── index.blade.php
│ │ ├── roles/
│ │ │ ├── _form.blade.php
│ │ │ ├── _members.blade.php
│ │ │ ├── _pretty.blade.php
│ │ │ ├── _public.blade.php
│ │ │ ├── create.blade.php
│ │ │ ├── edit.blade.php
│ │ │ ├── index.blade.php
│ │ │ ├── rows/
│ │ │ │ └── permissions.blade.php
│ │ │ ├── show.blade.php
│ │ │ └── users/
│ │ │ ├── _form.blade.php
│ │ │ └── create.blade.php
│ │ ├── roles.blade.php
│ │ ├── share/
│ │ │ └── setup.blade.php
│ │ ├── show.blade.php
│ │ ├── sidebar/
│ │ │ └── index.blade.php
│ │ ├── stats/
│ │ │ └── index.blade.php
│ │ ├── styles/
│ │ │ ├── _form-footer.blade.php
│ │ │ ├── _form.blade.php
│ │ │ ├── _preview.blade.php
│ │ │ ├── _reorder.blade.php
│ │ │ ├── builder.blade.php
│ │ │ ├── create.blade.php
│ │ │ ├── edit.blade.php
│ │ │ ├── index.blade.php
│ │ │ └── theme.blade.php
│ │ ├── webhooks/
│ │ │ ├── _form.blade.php
│ │ │ ├── create.blade.php
│ │ │ ├── edit.blade.php
│ │ │ └── index.blade.php
│ │ └── webhooks.blade.php
│ ├── characters/
│ │ ├── families/
│ │ │ ├── _reorder.blade.php
│ │ │ └── reorder.blade.php
│ │ ├── form/
│ │ │ ├── _entry.blade.php
│ │ │ ├── _organisations.blade.php
│ │ │ ├── _panes.blade.php
│ │ │ ├── _tabs.blade.php
│ │ │ └── _traits.blade.php
│ │ ├── organisations/
│ │ │ ├── _form.blade.php
│ │ │ ├── create.blade.php
│ │ │ └── edit.blade.php
│ │ ├── organisations.blade.php
│ │ ├── panels/
│ │ │ ├── _appearance.blade.php
│ │ │ ├── _buttons.blade.php
│ │ │ ├── _personality.blade.php
│ │ │ └── organisations.blade.php
│ │ └── races/
│ │ ├── _reorder.blade.php
│ │ └── reorder.blade.php
│ ├── components/
│ │ ├── ad.blade.php
│ │ ├── ads/
│ │ │ └── native.blade.php
│ │ ├── alert.blade.php
│ │ ├── badge.blade.php
│ │ ├── box/
│ │ │ └── footer.blade.php
│ │ ├── box.blade.php
│ │ ├── button/
│ │ │ └── delete-confirm.blade.php
│ │ ├── buttons/
│ │ │ ├── confirm-delete.blade.php
│ │ │ └── confirm.blade.php
│ │ ├── campaigns/
│ │ │ └── module-box.blade.php
│ │ ├── character-sheet.blade.php
│ │ ├── checkbox.blade.php
│ │ ├── dashboards/
│ │ │ └── widgets/
│ │ │ └── selection.blade.php
│ │ ├── date.blade.php
│ │ ├── dialog/
│ │ │ ├── article.blade.php
│ │ │ ├── close.blade.php
│ │ │ ├── footer.blade.php
│ │ │ └── header.blade.php
│ │ ├── dialog.blade.php
│ │ ├── dropdowns/
│ │ │ ├── divider.blade.php
│ │ │ ├── item.blade.php
│ │ │ └── section.blade.php
│ │ ├── entities/
│ │ │ ├── submenu.blade.php
│ │ │ └── thumbnail.blade.php
│ │ ├── entity-link.blade.php
│ │ ├── faq-element.blade.php
│ │ ├── form/
│ │ │ ├── abilities.blade.php
│ │ │ ├── characters.blade.php
│ │ │ ├── entity_types.blade.php
│ │ │ ├── families.blade.php
│ │
================================================
FILE CONTENTS
================================================
================================================
FILE: .claude/commands/translate.md
================================================
# Translate Missing Strings
Translate missing translations for the given locale.
Usage: /translate [locale_code] [locale_name]
Example: /translate fr French
## Steps
1. Run `php artisan translations:missing $ARG1` and capture the output
2. For each missing key/string:
- Translate the English string to the target language naturally (not literally)
- Preserve `:variable` placeholders, `<html>` tags, and pluralization syntax exactly
- Match tone/formality of existing translations (check a few rows in ltm_translations first)
3. Insert each translation into `ltm_translations`. status field = 1. saved_value = null.
4. Confirm count of translations added
## Rules
- Never guess at technical terms — keep English if unsure
- Kanka-specific terms (Whiteboard) stay in English unless an equivalent already exists in the DB for that locale
```
Then invoke as:
```
/translate fr French
/translate de German
/translate es Spanish
## Locale rules
Apply these rules based on the target locale:
**fr**
- Use Swiss French spelling and idioms
- No space before `:` `!` `?` `;` (Swiss convention, unlike standard French)
- Prefer Swiss vocabulary where it differs (e.g. "septante" vs "soixante-dix" if numbers appear)
**es**
- Default to neutral Latin American Spanish unless specified otherwise
================================================
FILE: .claude/skills/livewire-development/SKILL.md
================================================
---
name: livewire-development
description: >-
Develops reactive Livewire 3 components. Activates when creating, updating, or modifying
Livewire components; working with wire:model, wire:click, wire:loading, or any wire: directives;
adding real-time updates, loading states, or reactivity; debugging component behavior;
writing Livewire tests; or when the user mentions Livewire, component, counter, or reactive UI.
---
# Livewire Development
## When to Apply
Activate this skill when:
- Creating new Livewire components
- Modifying existing component state or behavior
- Debugging reactivity or lifecycle issues
- Writing Livewire component tests
- Adding Alpine.js interactivity to components
- Working with wire: directives
## Documentation
Use `search-docs` for detailed Livewire 3 patterns and documentation.
## Basic Usage
### Creating Components
Use the `php artisan make:livewire [Posts\CreatePost]` Artisan command to create new components.
### Fundamental Concepts
- State should live on the server, with the UI reflecting it.
- All Livewire requests hit the Laravel backend; they're like regular HTTP requests. Always validate form data and run authorization checks in Livewire actions.
## Livewire 3 Specifics
### Key Changes From Livewire 2
These things changed in Livewire 3, but may not have been updated in this application. Verify this application's setup to ensure you follow existing conventions.
- Use `wire:model.live` for real-time updates, `wire:model` is now deferred by default.
- Components now use the `App\Livewire` namespace (not `App\Http\Livewire`).
- Use `$this->dispatch()` to dispatch events (not `emit` or `dispatchBrowserEvent`).
- Use the `components.layouts.app` view as the typical layout path (not `layouts.app`).
### New Directives
- `wire:show`, `wire:transition`, `wire:cloak`, `wire:offline`, `wire:target` are available for use.
### Alpine Integration
- Alpine is now included with Livewire; don't manually include Alpine.js.
- Plugins included with Alpine: persist, intersect, collapse, and focus.
## Best Practices
### Component Structure
- Livewire components require a single root element.
- Use `wire:loading` and `wire:dirty` for delightful loading states.
### Using Keys in Loops
<code-snippet name="Wire Key in Loops" lang="blade">
@foreach ($items as $item)
<div wire:key="item-{{ $item->id }}">
{{ $item->name }}
</div>
@endforeach
</code-snippet>
### Lifecycle Hooks
Prefer lifecycle hooks like `mount()`, `updatedFoo()` for initialization and reactive side effects:
<code-snippet name="Lifecycle Hook Examples" lang="php">
public function mount(User $user) { $this->user = $user; }
public function updatedSearch() { $this->resetPage(); }
</code-snippet>
## JavaScript Hooks
You can listen for `livewire:init` to hook into Livewire initialization:
<code-snippet name="Livewire Init Hook Example" lang="js">
document.addEventListener('livewire:init', function () {
Livewire.hook('request', ({ fail }) => {
if (fail && fail.status === 419) {
alert('Your session expired');
}
});
Livewire.hook('message.failed', (message, component) => {
console.error(message);
});
});
</code-snippet>
## Testing
<code-snippet name="Example Livewire Component Test" lang="php">
Livewire::test(Counter::class)
->assertSet('count', 0)
->call('increment')
->assertSet('count', 1)
->assertSee(1)
->assertStatus(200);
</code-snippet>
<code-snippet name="Testing Livewire Component Exists on Page" lang="php">
$this->get('/posts/create')
->assertSeeLivewire(CreatePost::class);
</code-snippet>
## Common Pitfalls
- Forgetting `wire:key` in loops causes unexpected behavior when items change
- Using `wire:model` expecting real-time updates (use `wire:model.live` instead in v3)
- Not validating/authorizing in Livewire actions (treat them like HTTP requests)
- Including Alpine.js separately when it's already bundled with Livewire 3
================================================
FILE: .claude/skills/pest-testing/SKILL.md
================================================
---
name: pest-testing
description: >-
Tests applications using the Pest 3 PHP framework. Activates when writing tests, creating unit or feature
tests, adding assertions, testing Livewire components, architecture testing, debugging test failures,
working with datasets or mocking; or when the user mentions test, spec, TDD, expects, assertion,
coverage, or needs to verify functionality works.
---
# Pest Testing 3
## When to Apply
Activate this skill when:
- Creating new tests (unit or feature)
- Modifying existing tests
- Debugging test failures
- Working with datasets, mocking, or test organization
- Writing architecture tests
## Documentation
Use `search-docs` for detailed Pest 3 patterns and documentation.
## Basic Usage
### Creating Tests
All tests must be written using Pest. Use `php artisan make:test --pest {name}`.
### Test Organization
- Tests live in the `tests/Feature` and `tests/Unit` directories.
- Do NOT remove tests without approval - these are core application code.
- Test happy paths, failure paths, and edge cases.
### Basic Test Structure
<code-snippet name="Basic Pest Test Example" lang="php">
it('is true', function () {
expect(true)->toBeTrue();
});
</code-snippet>
### Running Tests
- Run minimal tests with filter before finalizing: `php artisan test --compact --filter=testName`.
- Run all tests: `php artisan test --compact`.
- Run file: `php artisan test --compact tests/Feature/ExampleTest.php`.
## Assertions
Use specific assertions (`assertSuccessful()`, `assertNotFound()`) instead of `assertStatus()`:
<code-snippet name="Pest Response Assertion" lang="php">
it('returns all', function () {
$this->postJson('/api/docs', [])->assertSuccessful();
});
</code-snippet>
| Use | Instead of |
|-----|------------|
| `assertSuccessful()` | `assertStatus(200)` |
| `assertNotFound()` | `assertStatus(404)` |
| `assertForbidden()` | `assertStatus(403)` |
## Mocking
Import mock function before use: `use function Pest\Laravel\mock;`
## Datasets
Use datasets for repetitive tests (validation rules, etc.):
<code-snippet name="Pest Dataset Example" lang="php">
it('has emails', function (string $email) {
expect($email)->not->toBeEmpty();
})->with([
'james' => 'james@laravel.com',
'taylor' => 'taylor@laravel.com',
]);
</code-snippet>
## Pest 3 Features
### Architecture Testing
Pest 3 includes architecture testing to enforce code conventions:
<code-snippet name="Architecture Test Example" lang="php">
arch('controllers')
->expect('App\Http\Controllers')
->toExtendNothing()
->toHaveSuffix('Controller');
arch('models')
->expect('App\Models')
->toExtend('Illuminate\Database\Eloquent\Model');
arch('no debugging')
->expect(['dd', 'dump', 'ray'])
->not->toBeUsed();
</code-snippet>
### Type Coverage
Pest 3 provides improved type coverage analysis. Run with `--type-coverage` flag.
## Common Pitfalls
- Not importing `use function Pest\Laravel\mock;` before using mock
- Using `assertStatus(200)` instead of `assertSuccessful()`
- Forgetting datasets for repetitive validation tests
- Deleting tests without approval
================================================
FILE: .claude/skills/tailwindcss-development/SKILL.md
================================================
---
name: tailwindcss-development
description: >-
Styles applications using Tailwind CSS v4 utilities. Activates when adding styles, restyling components,
working with gradients, spacing, layout, flex, grid, responsive design, dark mode, colors,
typography, or borders; or when the user mentions CSS, styling, classes, Tailwind, restyle,
hero section, cards, buttons, or any visual/UI changes.
---
# Tailwind CSS Development
## When to Apply
Activate this skill when:
- Adding styles to components or pages
- Working with responsive design
- Implementing dark mode
- Extracting repeated patterns into components
- Debugging spacing or layout issues
## Documentation
Use `search-docs` for detailed Tailwind CSS v4 patterns and documentation.
## Basic Usage
- Use Tailwind CSS classes to style HTML. Check and follow existing Tailwind conventions in the project before introducing new patterns.
- Offer to extract repeated patterns into components that match the project's conventions (e.g., Blade, JSX, Vue).
- Consider class placement, order, priority, and defaults. Remove redundant classes, add classes to parent or child elements carefully to reduce repetition, and group elements logically.
## Tailwind CSS v4 Specifics
- Always use Tailwind CSS v4 and avoid deprecated utilities.
- `corePlugins` is not supported in Tailwind v4.
### CSS-First Configuration
In Tailwind v4, configuration is CSS-first using the `@theme` directive — no separate `tailwind.config.js` file is needed:
<code-snippet name="CSS-First Config" lang="css">
@theme {
--color-brand: oklch(0.72 0.11 178);
}
</code-snippet>
### Import Syntax
In Tailwind v4, import Tailwind with a regular CSS `@import` statement instead of the `@tailwind` directives used in v3:
<code-snippet name="v4 Import Syntax" lang="diff">
- @tailwind base;
- @tailwind components;
- @tailwind utilities;
+ @import "tailwindcss";
</code-snippet>
### Replaced Utilities
Tailwind v4 removed deprecated utilities. Use the replacements shown below. Opacity values remain numeric.
| Deprecated | Replacement |
|------------|-------------|
| bg-opacity-* | bg-black/* |
| text-opacity-* | text-black/* |
| border-opacity-* | border-black/* |
| divide-opacity-* | divide-black/* |
| ring-opacity-* | ring-black/* |
| placeholder-opacity-* | placeholder-black/* |
| flex-shrink-* | shrink-* |
| flex-grow-* | grow-* |
| overflow-ellipsis | text-ellipsis |
| decoration-slice | box-decoration-slice |
| decoration-clone | box-decoration-clone |
## Spacing
Use `gap` utilities instead of margins for spacing between siblings:
<code-snippet name="Gap Utilities" lang="html">
<div class="flex gap-8">
<div>Item 1</div>
<div>Item 2</div>
</div>
</code-snippet>
## Dark Mode
If existing pages and components support dark mode, new pages and components must support it the same way, typically using the `dark:` variant:
<code-snippet name="Dark Mode" lang="html">
<div class="bg-white dark:bg-gray-900 text-gray-900 dark:text-white">
Content adapts to color scheme
</div>
</code-snippet>
## Common Patterns
### Flexbox Layout
<code-snippet name="Flexbox Layout" lang="html">
<div class="flex items-center justify-between gap-4">
<div>Left content</div>
<div>Right content</div>
</div>
</code-snippet>
### Grid Layout
<code-snippet name="Grid Layout" lang="html">
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<div>Card 1</div>
<div>Card 2</div>
<div>Card 3</div>
</div>
</code-snippet>
## Common Pitfalls
- Using deprecated v3 utilities (bg-opacity-*, flex-shrink-*, etc.)
- Using `@tailwind` directives instead of `@import "tailwindcss"`
- Trying to use `tailwind.config.js` instead of CSS `@theme` directive
- Using margins for spacing between siblings instead of gap utilities
- Forgetting to add dark mode variants when the project uses dark mode
================================================
FILE: .dockerignore
================================================
vendor
bootstrap/cache/*
**/*.log
================================================
FILE: .editorconfig
================================================
; This file is for unifying the coding style for different editors and IDEs.
; More information at http://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 4
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
[*.{yml,yaml}]
indent_size = 2
[docker-compose.yml]
indent_size = 4
================================================
FILE: .gitattributes
================================================
* text=auto
*.blade.php diff=html
*.css diff=css
*.html diff=html
*.md diff=markdown
*.php diff=php
/.github export-ignore
CHANGELOG.md export-ignore
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
Please report bugs in Discord [](https://discord.gg/rhsyZJ4). This github isn't used for bug tracking.
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
Please send feature requests to the [Roadmap](https://app.kanka.io/roadmap). This github isn't used for feature requests.
================================================
FILE: .github/workflows/claude.yml
================================================
name: Claude Code
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened, assigned]
pull_request_review:
types: [submitted]
jobs:
claude:
if: |
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
issues: read
id-token: write
actions: read # Required for Claude to read CI results on PRs
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Run Claude Code
id: claude
uses: anthropics/claude-code-action@v1
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
# This is an optional setting that allows Claude to read CI results on PRs
additional_permissions: |
actions: read
# Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it.
# prompt: 'Update the pull request description to include a summary of changes.'
# Optional: Add claude_args to customize behavior and configuration
# See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
# or https://code.claude.com/docs/en/cli-reference for available options
# claude_args: '--allowed-tools Bash(gh pr:*)'
================================================
FILE: .github/workflows/lint.yml
================================================
name: Fix Code Style & Duplication Check
on:
pull_request:
branches:
- main
- develop
paths:
- '**.php'
push:
branches:
- main
paths:
- '**.php'
jobs:
lint:
runs-on: ubuntu-latest
permissions:
# Give the default GITHUB_TOKEN write permission to commit and push the
# added or changed files to the repository.
contents: write
strategy:
fail-fast: true
matrix:
php: [8.4]
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.ref }}
repository: ${{ github.event.pull_request.head.repo.full_name }}
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: json, dom, curl, libxml, mbstring
coverage: none
- name: Install Pint
run: composer global require laravel/pint
- name: Run Pint
run: pint
# can't run this in a github action
# - name: Run PHPCPD
# run: ./vendor/bin/phpcpd app/ --min-lines=5 --min-tokens=70
- name: Auto-commit fixes
uses: stefanzweifel/git-auto-commit-action@v6
with:
commit_message: Fix styling
================================================
FILE: .github/workflows/phpstan.yml
================================================
name: "Tests"
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the "develop" branch
pull_request:
branches: [ "develop" ]
paths:
- '**.php'
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
permissions:
contents: read
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
php: [8.4]
laravel: ["^11.0"]
name: PHP ${{ matrix.php }}
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Checkout code
uses: actions/checkout@v3
- name: Setup PHP
uses: "shivammathur/setup-php@v2"
with:
php-version: "${{ matrix.php }}"
extensions: "dom, curl, libxml, mbstring, zip, fileinfo, sqlite, pdo_sqlite"
coverage: "none"
- name: Install Composer dependencies
run: composer install --prefer-dist --no-interaction --no-progress
- name: "Install highest dependencies from composer.json"
run: "composer install --no-interaction --no-progress"
- name: "Execute static analysis"
run: "composer run-script test:types"
#- name: Generate app key
# run: php artisan key:generate
#- name: Execute tests
# run: vendor/bin/phpunit
================================================
FILE: .gitignore
================================================
/node_modules
/public/hot
/public/build/js/tinymce
/public/storage
/public/.htaccess
/public/exports
/public/info.php
/public/robots.txt
/public/ads.txt
#/public/images/defaults/patreon
/storage/*.key
/storage
/vendor
/.scannerwork
/.idea
/.vagrant
/.vscode
/.sail
/.superpowers
/.worktrees
/docs/superpowers
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
.env
.env.local
.DS_Store
.phpunit.result.cache
*.sql
package-lock.json
.phpstorm.meta.php
_ide_helper.php
test.json
================================================
FILE: .jshintrc
================================================
{
"undef": true,
"esversion": 11,
"unused": true,
"browser": true,
"node": true,
"globals": {
"$": false,
"document": false,
"require": false,
"jQuery": false,
"CodeMirror": false,
"Stripe": false
}
}
================================================
FILE: .mariadb/10-create-logs-database.sh
================================================
#!/usr/bin/env bash
mysql --user=root --password="$MYSQL_ROOT_PASSWORD" <<-EOSQL
CREATE DATABASE IF NOT EXISTS logs;
GRANT ALL PRIVILEGES ON \`logs%\`.* TO '$MYSQL_USER'@'%';
EOSQL
================================================
FILE: .mariadb/conf.d/kanka.cnf
================================================
[mysqld]
max_allowed_packet=4G
net_read_timeout=600
net_write_timeout=600
wait_timeout=28800
interactive_timeout=28800
connect_timeout=3600
================================================
FILE: .mcp.json
================================================
{
"mcpServers": {
"laravel-boost": {
"command": "vendor/bin/sail",
"args": [
"artisan",
"boost:mcp"
]
}
}
}
================================================
FILE: .nginx/thumbor.conf
================================================
upstream thumbor {
server thumbor:8888;
}
server {
listen 80 default;
server_name localhost;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With';
if ($request_method = 'OPTIONS') {
return 204;
}
location ~* "^/(..)(..)(.+)?.jpg$" {
proxy_pass http://thumbor$request_uri;
}
location ~* "^/(..)(..)(.+)?.jpeg$" {
proxy_pass http://thumbor$request_uri;
}
location ~* "^/(..)(..)(.+)?.png" {
proxy_pass http://thumbor$request_uri;
}
location ~ /\.ht { deny all; }
location ~ /\.hg { deny all; }
location ~ /\.svn { deny all; }
}
================================================
FILE: .phpactor.json
================================================
{
"$schema": "/phpactor.schema.json",
"language_server_phpstan.enabled": true,
"php_code_sniffer.enabled": true
}
================================================
FILE: CLAUDE.md
================================================
===
<laravel-boost-guidelines>
=== foundation rules ===
# Laravel Boost Guidelines
The Laravel Boost guidelines are specifically curated by Laravel maintainers for this application. These guidelines should be followed closely to ensure the best experience when building Laravel applications.
## Foundational Context
This application is a Laravel application and its main Laravel ecosystems package & versions are below. You are an expert with them all. Ensure you abide by these specific packages & versions.
- php - 8.4.14
- laravel/cashier (CASHIER) - v15
- laravel/framework (LARAVEL) - v11
- laravel/passport (PASSPORT) - v13
- laravel/prompts (PROMPTS) - v0
- laravel/reverb (REVERB) - v1
- laravel/scout (SCOUT) - v10
- laravel/socialite (SOCIALITE) - v5
- livewire/livewire (LIVEWIRE) - v3
- larastan/larastan (LARASTAN) - v3
- laravel/mcp (MCP) - v0
- laravel/pint (PINT) - v1
- laravel/sail (SAIL) - v1
- pestphp/pest (PEST) - v3
- phpunit/phpunit (PHPUNIT) - v11
- laravel-echo (ECHO) - v2
- tailwindcss (TAILWINDCSS) - v4
- vue (VUE) - v3
## Skills Activation
This project has domain-specific skills available. You MUST activate the relevant skill whenever you work in that domain—don't wait until you're stuck.
- `livewire-development` — Develops reactive Livewire 3 components. Activates when creating, updating, or modifying Livewire components; working with wire:model, wire:click, wire:loading, or any wire: directives; adding real-time updates, loading states, or reactivity; debugging component behavior; writing Livewire tests; or when the user mentions Livewire, component, counter, or reactive UI.
- `pest-testing` — No testing. No automated testing. Don't try running pest or phpunit.
- `tailwindcss-development` — Styles applications using Tailwind CSS v4 utilities. Activates when adding styles, restyling components, working with gradients, spacing, layout, flex, grid, responsive design, dark mode, colors, typography, or borders; or when the user mentions CSS, styling, classes, Tailwind, restyle, hero section, cards, buttons, or any visual/UI changes.
## Conventions
- You must follow all existing code conventions used in this application. When creating or editing a file, check sibling files for the correct structure, approach, and naming.
- Use descriptive names for variables and methods. For example, `isRegisteredForDiscounts`, not `discount()`.
- Check for existing components to reuse before writing a new one.
## Verification Scripts
- Do not create verification scripts or tinker when tests cover that functionality and prove they work. Unit and feature tests are more important.
## Application Structure & Architecture
- Stick to existing directory structure; don't create new base folders without approval.
- Do not change the application's dependencies without approval.
## Frontend Bundling
- If the user doesn't see a frontend change reflected in the UI, it could mean they need to run `vendor/bin/sail yarn run build`, `vendor/bin/sail yarn run dev`, or `vendor/bin/sail composer run dev`. Never ask them to run these commands, but remind them to do it in your closing summary.
## Documentation Files
- You must only create documentation files if explicitly requested by the user.
## Replies
- Be concise in your explanations - focus on what's important rather than explaining obvious details.
=== boost rules ===
# Laravel Boost
- Laravel Boost is an MCP server that comes with powerful tools designed specifically for this application. Use them.
## Artisan
- Use the `list-artisan-commands` tool when you need to call an Artisan command to double-check the available parameters.
## URLs
- Whenever you share a project URL with the user, you should use the `get-absolute-url` tool to ensure you're using the correct scheme, domain/IP, and port.
## Tinker / Debugging
- You should use the `tinker` tool when you need to execute PHP to debug code or query Eloquent models directly.
- Use the `database-query` tool when you only need to read from the database.
## Reading Browser Logs With the `browser-logs` Tool
- You can read browser logs, errors, and exceptions using the `browser-logs` tool from Boost.
- Only recent browser logs will be useful - ignore old logs.
## Searching Documentation (Critically Important)
- Boost comes with a powerful `search-docs` tool you should use before trying other approaches when working with Laravel or Laravel ecosystem packages. This tool automatically passes a list of installed packages and their versions to the remote Boost API, so it returns only version-specific documentation for the user's circumstance. You should pass an array of packages to filter on if you know you need docs for particular packages.
- Search the documentation before making code changes to ensure we are taking the correct approach.
- Use multiple, broad, simple, topic-based queries at once. For example: `['rate limiting', 'routing rate limiting', 'routing']`. The most relevant results will be returned first.
- Do not add package names to queries; package information is already shared. For example, use `test resource table`, not `filament 4 test resource table`.
### Available Search Syntax
1. Simple Word Searches with auto-stemming - query=authentication - finds 'authenticate' and 'auth'.
2. Multiple Words (AND Logic) - query=rate limit - finds knowledge containing both "rate" AND "limit".
3. Quoted Phrases (Exact Position) - query="infinite scroll" - words must be adjacent and in that order.
4. Mixed Queries - query=middleware "rate limit" - "middleware" AND exact phrase "rate limit".
5. Multiple Queries - queries=["authentication", "middleware"] - ANY of these terms.
=== php rules ===
# PHP
- Always use curly braces for control structures, even for single-line bodies.
## Constructors
- Use PHP 8 constructor property promotion in `__construct()`.
- <code-snippet>public function __construct(public GitHub $github) { }</code-snippet>
- Do not allow empty `__construct()` methods with zero parameters unless the constructor is private.
## Type Declarations
- Always use explicit return type declarations for methods and functions.
- Use appropriate PHP type hints for method parameters.
<code-snippet name="Explicit Return Types and Method Params" lang="php">
protected function isAccessible(User $user, ?string $path = null): bool
{
...
}
</code-snippet>
## Enums
- Typically, keys in an Enum should be TitleCase. For example: `FavoritePerson`, `BestLake`, `Monthly`.
## Comments
- Prefer PHPDoc blocks over inline comments. Never use comments within the code itself unless the logic is exceptionally complex.
## PHPDoc Blocks
- Add useful array shape type definitions when appropriate.
=== sail rules ===
# Laravel Sail
- This project runs inside Laravel Sail's Docker containers. You MUST execute all commands through Sail.
- Start services using `vendor/bin/sail up -d` and stop them with `vendor/bin/sail stop`.
- Open the application in the browser by running `vendor/bin/sail open`.
- Always prefix PHP, Artisan, Composer, and Node commands with `vendor/bin/sail`. Examples:
- Run Artisan Commands: `vendor/bin/sail artisan migrate`
- Install Composer packages: `vendor/bin/sail composer install`
- Execute Node commands: `vendor/bin/sail yarn run dev`
- Execute PHP scripts: `vendor/bin/sail php [script]`
- View all available Sail commands by running `vendor/bin/sail` without arguments.
=== laravel/core rules ===
# Do Things the Laravel Way
- Use `vendor/bin/sail artisan make:` commands to create new files (i.e. migrations, controllers, models, etc.). You can list available Artisan commands using the `list-artisan-commands` tool.
- If you're creating a generic PHP class, use `vendor/bin/sail artisan make:class`.
- Pass `--no-interaction` to all Artisan commands to ensure they work without user input. You should also pass the correct `--options` to ensure correct behavior.
## Database
- Always use proper Eloquent relationship methods with return type hints. Prefer relationship methods over raw queries or manual joins.
- Use Eloquent models and relationships before suggesting raw database queries.
- Avoid `DB::`; prefer `Model::query()`. Generate code that leverages Laravel's ORM capabilities rather than bypassing them.
- Generate code that prevents N+1 query problems by using eager loading.
- Use Laravel's query builder for very complex database operations.
### Model Creation
- When creating new models, create useful factories and seeders for them too. Ask the user if they need any other things, using `list-artisan-commands` to check the available options to `vendor/bin/sail artisan make:model`.
### APIs & Eloquent Resources
- For APIs, default to using Eloquent API Resources and API versioning unless existing API routes do not, then you should follow existing application convention.
## Controllers & Validation
- Always create Form Request classes for validation rather than inline validation in controllers. Include both validation rules and custom error messages.
- Check sibling Form Requests to see if the application uses array or string based validation rules.
## Authentication & Authorization
- Use Laravel's built-in authentication and authorization features (gates, policies, Sanctum, etc.).
## URL Generation
- When generating links to other pages, prefer named routes and the `route()` function.
## Queues
- Use queued jobs for time-consuming operations with the `ShouldQueue` interface.
## Configuration
- Use environment variables only in configuration files - never use the `env()` function directly outside of config files. Always use `config('app.name')`, not `env('APP_NAME')`.
## Vite Error
- If you receive an "Illuminate\Foundation\ViteException: Unable to locate file in Vite manifest" error, you can run `vendor/bin/sail yarn run build` or ask the user to run `vendor/bin/sail yarn run dev` or `vendor/bin/sail composer run dev`.
=== laravel/v11 rules ===
# Laravel 11
- CRITICAL: ALWAYS use `search-docs` tool for version-specific Laravel documentation and updated code examples.
- This project upgraded from Laravel 10 without migrating to the new streamlined Laravel 11 file structure.
- This is perfectly fine and recommended by Laravel. Follow the existing structure from Laravel 10. We do not need to migrate to the Laravel 11 structure unless the user explicitly requests it.
## Laravel 10 Structure
- Middleware typically lives in `app/Http/Middleware/` and service providers in `app/Providers/`.
- There is no `bootstrap/app.php` application configuration in a Laravel 10 structure:
- Middleware registration is in `app/Http/Kernel.php`
- Exception handling is in `app/Exceptions/Handler.php`
- Console commands and schedule registration is in `app/Console/Kernel.php`
- Rate limits likely exist in `RouteServiceProvider` or `app/Http/Kernel.php`
## Database
- When modifying a column, the migration must include all of the attributes that were previously defined on the column. Otherwise, they will be dropped and lost.
- Laravel 11 allows limiting eagerly loaded records natively, without external packages: `$query->latest()->limit(10);`.
### Models
- Casts can and likely should be set in a `casts()` method on a model rather than the `$casts` property. Follow existing conventions from other models.
## New Artisan Commands
- List Artisan commands using Boost's MCP tool, if available. New commands available in Laravel 11:
- `vendor/bin/sail artisan make:enum`
- `vendor/bin/sail artisan make:class`
- `vendor/bin/sail artisan make:interface`
=== livewire/core rules ===
# Livewire
- Livewire allows you to build dynamic, reactive interfaces using only PHP — no JavaScript required.
- Instead of writing frontend code in JavaScript frameworks, you use Alpine.js to build the UI when client-side interactions are required.
- State lives on the server; the UI reflects it. Validate and authorize in actions (they're like HTTP requests).
- IMPORTANT: Activate `livewire-development` every time you're working with Livewire-related tasks.
=== pint/core rules ===
# Laravel Pint Code Formatter
- You must run `vendor/bin/sail bin pint --dirty --format agent` before finalizing changes to ensure your code matches the project's expected style.
- Do not run `vendor/bin/sail bin pint --test --format agent`, simply run `vendor/bin/sail bin pint --format agent` to fix any formatting issues.
=== pest/core rules ===
## Pest
- This project has no automated tests. Don't bother with them.
=== tailwindcss/core rules ===
# Tailwind CSS
- Always use existing Tailwind conventions; check project patterns before adding new ones.
- IMPORTANT: Always use `search-docs` tool for version-specific Tailwind CSS documentation and updated code examples. Never rely on training data.
- IMPORTANT: Activate `tailwindcss-development` every time you're working with a Tailwind CSS or styling-related task.
</laravel-boost-guidelines>
# i18n
The app is translated in several languages by community members, but is developed in english. Never hardcode translations; use the `__()` function instead.
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at hello@kanka.io. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq
================================================
FILE: LICENSE
================================================
“Commons Clause” License Condition v1.0
The Software is provided to you by the Licensor under the License, as defined below, subject to the following condition.
Without limiting other conditions in the License, the grant of rights under the License will not include, and the License does not grant to you, the right to Sell the Software.
For purposes of the foregoing, “Sell” means practicing any or all of the rights granted to you under the License to provide to third parties, for a fee or other consideration (including without limitation fees for hosting or consulting/ support services related to the Software), a product or service whose value derives, entirely or substantially, from the functionality of the Software. Any license notice or attribution required by the License must also include this Commons Clause License Condition notice.
Software: Kanka
Licensor: Owlchester SNC
================================================
FILE: README.md
================================================
# Kanka
# [](https://kanka.io/en-US)
[](https://php.net/)
[](https://kanka.io/go/discord)
[Kanka](https://kanka.io/en-US) is a **source available** collaborative world building and campaign management tool tailored for tabletop RPG players and storytellers. This repository is the primary source for development of the Kanka platform. It's written in PHP, a mix of VueJS and jQuery, and runs with a MySQL database. A new version is released on average every a month.
<img width="900" alt="kanka-hero" src="https://th.kanka.io/Vg8GkfblEvh1Z4HhO2Cwr4hzuCs=/900x562/smart/src/app/front/devices-preview-hd.png">
This repository hosts the core Kanka web application.
## Install Kanka
- [Installing & Running Kanka](./docs/running.md).
## Getting involved
- [Contribute to Kanka](./docs/contributing.md)
- [Translating Kanka](./docs/translating.md)
## Technical guides
- [Compiling assets](./docs/assets.md)
## Support and Community
Issues are inevitable. When you encounter one when using Kanka, our team and community is here to help.
💬 Ask for help on [Discord](https://kanka.io/go/discord)
🏛️ Find a solution in our [Documentation](https://docs.kanka.io)
📧 Shoot us an email at [hello@kanka.io](mailto:hello@kanka.io)
================================================
FILE: app/Auth/PassportTokenGuard.php
================================================
<?php
namespace App\Auth;
use Illuminate\Contracts\Auth\Authenticatable;
use Laravel\Passport\AccessToken;
use Laravel\Passport\Guards\TokenGuard;
use Laravel\Passport\Token;
/**
* Workaround for a Passport 13.7 bug where personal access tokens are rejected
* when the user's ID matches the OAuth client's ID. The upstream check assumes
* equal IDs means a client credentials token, but this is a false positive.
*
* @see https://github.com/laravel/passport/blob/master/src/Guards/TokenGuard.php
*/
class PassportTokenGuard extends TokenGuard
{
protected function authenticateViaBearerToken(): ?Authenticatable
{
if (! $psr = $this->getPsrRequestViaBearerToken()) {
return null;
}
$client = $this->clients->findActive(
$psr->getAttribute('oauth_client_id')
);
if (! $client ||
($client->provider &&
$client->provider !== $this->provider->getProviderName())) {
return null;
}
$this->setClient($client);
$oauthUserId = $psr->getAttribute('oauth_user_id');
if (empty($oauthUserId)) {
return null;
}
// Passport 13.7 added a check: if oauth_user_id === oauth_client_id, reject
// as a client credentials token. However, this is a false positive when the
// user's primary key happens to equal the client's ID. We verify via the DB.
if ($oauthUserId === $psr->getAttribute('oauth_client_id')) {
$tokenId = $psr->getAttribute('oauth_access_token_id');
$token = Token::find($tokenId);
if (! $token || $token->user_id === null) {
return null;
}
}
try {
$user = $this->provider->retrieveById($oauthUserId);
} catch (\Exception) {
return null;
}
return $user?->withAccessToken(AccessToken::fromPsrRequest($psr));
}
}
================================================
FILE: app/Console/Commands/Campaigns/CleanupCommand.php
================================================
<?php
namespace App\Console\Commands\Campaigns;
use App\Models\Campaign;
use App\Observers\CampaignObserver;
use App\Services\Campaign\PurgeService;
use Carbon\Carbon;
use Illuminate\Console\Command;
class CleanupCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'campaigns:cleanup {dry=1}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Delete empty campaigns';
public function __construct(protected PurgeService $service)
{
parent::__construct();
}
/**
* Execute the console command.
*/
public function handle()
{
$this->info(Carbon::now());
Campaign::observe(CampaignObserver::class);
$dry = $this->argument('dry');
if ($dry === '0') {
$this->service->real();
}
$count = $this->service->purgeEmpty();
if ($dry === '0') {
$this->info(Carbon::now() . ': Deleted ' . $count . ' empty campaigns.');
} else {
$this->info(Carbon::now() . ': There are ' . $count . ' empty campaigns that can be deleted.');
}
}
}
================================================
FILE: app/Console/Commands/Campaigns/DeleteCommand.php
================================================
<?php
namespace App\Console\Commands\Campaigns;
use App\Jobs\Campaigns\Delete;
use App\Jobs\DeletedCampaignCleanupJob;
use App\Models\Campaign;
use Illuminate\Console\Command;
class DeleteCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'campaigns:delete {campaign}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Delete a specified campaign';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$campaignId = $this->argument('campaign');
$campaign = Campaign::where('id', $campaignId)->first();
if ($campaign) {
Delete::dispatch($campaign);
DeletedCampaignCleanupJob::dispatch($campaign);
$this->info('Queued campaign #' . $campaignId . ' for deletion');
} else {
$this->info('Invalid campaign ID');
}
return 0;
}
}
================================================
FILE: app/Console/Commands/Campaigns/DummyEntities.php
================================================
<?php
namespace App\Console\Commands\Campaigns;
use App\Facades\CampaignCache;
use App\Facades\CampaignLocalization;
use App\Facades\CharacterCache;
use App\Facades\EntityCache;
use App\Facades\QuestCache;
use App\Models\Ability;
use App\Models\Attribute;
use App\Models\Calendar;
use App\Models\Campaign;
use App\Models\Character;
use App\Models\EntityAbility;
use App\Models\Event;
use App\Models\Family;
use App\Models\Item;
use App\Models\Journal;
use App\Models\Location;
use App\Models\Note;
use App\Models\Organisation;
use App\Models\Quest;
use App\Models\QuestElement;
use App\Models\Race;
use App\Models\Relation;
use App\Models\Tag;
use App\Observers\AbilityObserver;
use App\Observers\CalendarObserver;
use App\Observers\EntityAbilityObserver;
use App\Observers\EventObserver;
use App\Observers\JournalObserver;
use App\Observers\LocationObserver;
use App\Observers\NoteObserver;
use App\Observers\QuestElementObserver;
use App\Observers\QuestObserver;
use App\Observers\RaceObserver;
use App\Observers\RelationObserver;
use App\Observers\TagObserver;
use Carbon\Carbon;
use Illuminate\Console\Command;
use Illuminate\Database\Eloquent\Factories\Sequence;
class DummyEntities extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'campaigns:populate {campaign}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Generate dummy entities in a specified campaign';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$campaignId = (int) $this->argument('campaign');
$campaign = Campaign::findOrFail($campaignId);
CampaignCache::campaign($campaign);
EntityCache::campaign($campaign);
CharacterCache::campaign($campaign);
QuestCache::campaign($campaign);
$this->loadObservers($campaign);
// Generate Characters Abilities and Locations
$firstLocation = Location::factory()
->state(['name' => 'Thaelia', 'campaign_id' => $campaign->id])
->has(
Character::factory()->state(['campaign_id' => $campaign->id])
->has(Item::factory()->state(['name' => 'Sword of Cebolla', 'campaign_id' => $campaign->id, 'price' => rand(1, 15) . 'g']))
)
->has(Location::factory()
->state(['name' => 'March', 'campaign_id' => $campaign->id])
->has(Location::factory()
->state(['name' => 'Adestry', 'campaign_id' => $campaign->id])))
->has(Location::factory()
->state(['name' => 'Tilley', 'campaign_id' => $campaign->id])
->has(Location::factory()
->state(['name' => 'Carrothead', 'campaign_id' => $campaign->id])))
->has(Character::factory()->state(['campaign_id' => $campaign->id])->count(2))
->has(Location::factory()->state(['name' => 'Orlene', 'campaign_id' => $campaign->id]))
->has(Location::factory()
->state(['name' => 'Owlchester', 'campaign_id' => $campaign->id]))
->create();
$secondLocation = Location::factory()
->state(['name' => 'Medina', 'campaign_id' => $campaign->id])
->has(Location::factory()->count(2)->state(new Sequence(
['name' => 'Torchio', 'campaign_id' => $campaign->id],
['name' => 'Urdino', 'campaign_id' => $campaign->id]
)))
->has(Character::factory()->state(['campaign_id' => $campaign->id]))
->has(Character::factory()->state(['campaign_id' => $campaign->id])
->has(Item::factory()->state(['name' => 'Dagger of Longaniza', 'campaign_id' => $campaign->id, 'price' => rand(1, 15) . 'g'])))
->create();
$thirdLocation = Location::factory()->state(['campaign_id' => $campaign->id, 'name' => 'Middle Earth'])->create();
// Generate Characters
$firstCharacter = Character::factory()->state(['campaign_id' => $campaign->id, 'name' => 'Biblo Swaggins'])->create();
$secondCharacter = Character::factory()->state(['campaign_id' => $campaign->id])->create();
$thirdCharacter = Character::factory()->state(['campaign_id' => $campaign->id])->create();
$fourthCharacter = Character::factory()->state(['campaign_id' => $campaign->id])->create();
$fifthCharacter = Character::factory()->state(['campaign_id' => $campaign->id])->create();
Ability::factory()->state(['name' => 'Loud shout', 'campaign_id' => $campaign->id])->has(EntityAbility::factory()->state(['entity_id' => $firstCharacter->entity->id]), 'ability')->create();
Attribute::factory()->count(7)->state(
new Sequence(
['name' => 'Population', 'entity_id' => $firstLocation->entity->id, 'is_pinned' => 1],
['name' => 'Population', 'entity_id' => $secondLocation->entity->id, 'is_pinned' => 1],
['name' => 'Population', 'entity_id' => $thirdLocation->entity->id, 'is_pinned' => 1],
['name' => 'HP', 'value' => rand(1, 20), 'entity_id' => $firstCharacter->entity->id, 'is_pinned' => 1],
['name' => 'Level', 'value' => rand(1, 20), 'entity_id' => $firstCharacter->entity->id, 'is_pinned' => 1],
['name' => 'HP', 'value' => rand(1, 20), 'entity_id' => $secondCharacter->entity->id, 'is_pinned' => 1],
['name' => 'Level', 'value' => rand(1, 20), 'entity_id' => $secondCharacter->entity->id, 'is_pinned' => 1],
)
)
->create();
// Generate Families
Family::factory()
->state(['name' => 'Graff', 'campaign_id' => $campaign->id])
->has(Family::factory()->state(['name' => 'Market', 'campaign_id' => $campaign->id]))
->create();
Family::factory()->state(['name' => 'Joren', 'campaign_id' => $campaign->id])->create();
// Generate Organisations
Organisation::factory()
->state(['name' => 'Kankappy Cult', 'campaign_id' => $campaign->id])
->has(Organisation::factory()->state(['name' => 'Fun Police', 'campaign_id' => $campaign->id]))
->create();
Organisation::factory()->state(['name' => 'Great Reset', 'campaign_id' => $campaign->id])->create();
// Generate Events
Event::factory()->count(4)->state(
new Sequence(
['name' => 'The Great War', 'campaign_id' => $campaign->id],
['name' => 'Northern Rebellion', 'campaign_id' => $campaign->id],
['name' => 'Peace of the Sea', 'campaign_id' => $campaign->id],
['name' => 'Royal Wedding', 'campaign_id' => $campaign->id],
)
)
->create();
// Generate Items
Item::factory()->count(5)->state(
new Sequence(
['name' => 'Bow', 'campaign_id' => $campaign->id],
['name' => 'Crowbar', 'campaign_id' => $campaign->id],
['name' => 'Shield', 'campaign_id' => $campaign->id],
['name' => 'Sword', 'campaign_id' => $campaign->id],
['name' => 'Potion', 'campaign_id' => $campaign->id],
)
)
->create();
// Generate Notes
Note::factory()->count(3)->state(
new Sequence(
['name' => 'Aromas of Geneva', 'campaign_id' => $campaign->id],
['name' => 'Pottery Stacking', 'campaign_id' => $campaign->id],
['name' => 'Making Friends', 'campaign_id' => $campaign->id],
)
)
->create();
// Generate Races
Race::factory()
->state(['name' => 'Elf', 'campaign_id' => $campaign->id])
->has(Race::factory()
->state(['name' => 'Wood elf', 'campaign_id' => $campaign->id])
->has(Race::factory()
->state(['name' => 'Leaf elf', 'campaign_id' => $campaign->id])))
->has(Race::factory()->state(['name' => 'High elf', 'campaign_id' => $campaign->id]))
->create();
Race::factory()->count(2)->state(
new Sequence(
['name' => 'Human', 'campaign_id' => $campaign->id],
['name' => 'Owlbear', 'campaign_id' => $campaign->id],
)
)
->create();
// Generate Tags
Tag::factory()->count(3)->state(
new Sequence(
['name' => '🧛🏻♂️', 'colour' => 'maroon', 'campaign_id' => $campaign->id],
['name' => 'Important', 'colour' => 'aqua', 'campaign_id' => $campaign->id],
['name' => 'NPC', 'colour' => 'grey', 'campaign_id' => $campaign->id],
)
)
->create();
// Generate Quests
$itemFirstQuest = Item::factory()->state(['campaign_id' => $campaign->id])->create();
Quest::factory()->state(['name' => 'Salary Negotiations', 'campaign_id' => $campaign->id])
->has(QuestElement::factory()->state(['name' => 'Main Character', 'entity_id' => $firstCharacter->entity->id, 'created_by' => $campaign->created_by]), 'elements')
->has(QuestElement::factory()->state(['name' => 'MacGuffin', 'entity_id' => $itemFirstQuest->entity->id, 'created_by' => $campaign->created_by]), 'elements')
->create();
Quest::factory()->state(['name' => 'Fixin Bugs', 'campaign_id' => $campaign->id])
->create();
// Generate Journals
Journal::factory()->count(2)->state(
new Sequence(
['name' => 'Bilbo\'s journey to middle earth', 'campaign_id' => $campaign->id, 'author_id' => $firstCharacter->entity->id],
['name' => 'The tree rings', 'campaign_id' => $campaign->id],
)
)
->create();
// Generate Calendars
Calendar::factory()->state([
'name' => 'Gregorian', 'campaign_id' => $campaign->id,
'months' => '[{"name":"January","length":31,"type":"standard","alias":""},{"name":"February","length":28,"type":"standard","alias":""},{"name":"March","length":31,"type":"standard","alias":""},{"name":"April","length":30,"type":"standard","alias":""},{"name":"Mai","length":31,"type":"standard","alias":""},{"name":"June","length":30,"type":"standard","alias":""},{"name":"July","length":31,"type":"standard","alias":""},{"name":"August","length":31,"type":"standard","alias":""},{"name":"September","length":30,"type":"standard","alias":""},{"name":"October","length":31,"type":"standard","alias":""},{"name":"November","length":30,"type":"standard","alias":""},{"name":"December","length":31,"type":"standard","alias":""}]',
'weekdays' => '["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]',
'seasons' => '[{"name":"Spring","month":3,"day":21},{"name":"Summer","month":6,"day":21},{"name":"Autumn","month":9,"day":21},{"name":"Winter","month":12,"day":21}]',
'suffix' => 'AD',
'has_leap_year' => 1,
'leap_year_amount' => 1,
'leap_year_month' => 2,
'leap_year_offset' => 4,
'leap_year_start' => 4,
'start_offset' => 5,
'is_incrementing' => 1,
'date' => Carbon::now()->toDateString(),
])
->create();
// Generate Relations
$firstRelation = Relation::factory()->state(['relation' => 'Best Friend', 'campaign_id' => $campaign->id, 'owner_id' => $secondCharacter->entity->id, 'target_id' => $thirdCharacter->entity->id])->create();
Relation::factory()->state(['relation' => 'Mortal Enemy', 'campaign_id' => $campaign->id, 'owner_id' => $thirdCharacter->entity->id, 'target_id' => $secondCharacter->entity->id])->for($firstRelation, 'mirror')->create();
$secondRelation = Relation::factory()->state(['relation' => 'Best Friend', 'campaign_id' => $campaign->id, 'owner_id' => $secondCharacter->entity->id, 'target_id' => $thirdCharacter->entity->id])->create();
Relation::factory()->state(['relation' => 'Mortal Enemy', 'campaign_id' => $campaign->id, 'owner_id' => $thirdCharacter->entity->id, 'target_id' => $secondCharacter->entity->id])->for($secondRelation, 'mirror')->create();
return 0;
}
/**
* Load observers.
*/
private function loadObservers(Campaign $campaign)
{
CampaignLocalization::forceCampaign($campaign);
Ability::observe(AbilityObserver::class);
Location::observe(LocationObserver::class);
Calendar::observe(CalendarObserver::class);
Quest::observe(QuestObserver::class);
QuestElement::observe(QuestElementObserver::class);
Relation::observe(RelationObserver::class);
Journal::observe(JournalObserver::class);
Event::observe(EventObserver::class);
Tag::observe(TagObserver::class);
Race::observe(RaceObserver::class);
Note::observe(NoteObserver::class);
EntityAbility::observe(EntityAbilityObserver::class);
}
}
================================================
FILE: app/Console/Commands/Campaigns/ExportCommand.php
================================================
<?php
namespace App\Console\Commands\Campaigns;
use App\Models\Campaign;
use App\Models\User;
use App\Services\Campaign\ExportService;
use Carbon\Carbon;
use Illuminate\Console\Command;
class ExportCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'campaigns:export {campaign}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Export a campaign';
public function __construct(protected ExportService $service)
{
parent::__construct();
}
/**
* Execute the console command.
*/
public function handle()
{
$this->info(Carbon::now());
$campaignID = $this->argument('campaign');
$campaign = Campaign::find($campaignID);
$user = User::find(1);
$this->service
->campaign($campaign)
->user($user)
->queue();
$this->info(Carbon::now() . ': Queues campaign #' . $campaign->id . ' export.');
}
}
================================================
FILE: app/Console/Commands/Campaigns/ImportCommand.php
================================================
<?php
namespace App\Console\Commands\Campaigns;
use App\Enums\CampaignImportStatus;
use App\Jobs\Campaigns\Import;
use App\Models\Campaign;
use App\Models\CampaignImport;
use Illuminate\Console\Command;
class ImportCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'campaigns:import {campaign}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Re-run an import job';
/**
* Execute the console command.
*/
public function handle()
{
$campaignID = $this->argument('campaign');
$campaign = Campaign::find($campaignID);
$job = CampaignImport::where('campaign_id', $campaign->id)->orderBy('created_at', 'DESC')->
where('status_id', '<>', 1)->first();
if (! $job) {
$this->info('No job for campaign ' . $campaign->id);
return;
}
$job->status_id = CampaignImportStatus::QUEUED;
$job->saveQuietly();
Import::dispatch($job);
$this->info('Re-queued campaign ' . $campaign->id);
}
}
================================================
FILE: app/Console/Commands/Campaigns/PermissionsSyncCommand.php
================================================
<?php
namespace App\Console\Commands\Campaigns;
use App\Models\Campaign;
use App\Models\CampaignPermission;
use App\Models\CampaignRole;
use Illuminate\Console\Command;
use Illuminate\Database\Eloquent\Collection;
class PermissionsSyncCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'campaigns:permissions {campaign}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Sync permissions from one campaign role to another';
/**
* Execute the console command.
*/
public function handle(): int
{
$campaign = Campaign::find($this->argument('campaign'));
if (! $campaign) {
$this->error('Campaign not found.');
return 1;
}
$this->info("Campaign: {$campaign->name}");
/** @var Collection<int, CampaignRole> $roles */
$roles = CampaignRole::where('campaign_id', $campaign->id)->get();
if ($roles->count() < 2) {
$this->error('Campaign must have at least two roles to sync permissions.');
return 1;
}
$roleChoices = $roles->mapWithKeys(fn (CampaignRole $role) => [$role->id => $role->name])->all();
$sourceName = $this->choice('Select the source role (permissions will be copied from)', $roleChoices);
$sourceRole = $roles->firstWhere('name', $sourceName);
$targetName = $this->choice('Select the target role (permissions will be copied to)', $roleChoices);
$targetRole = $roles->firstWhere('name', $targetName);
if ($sourceRole->id === $targetRole->id) {
$this->error('Source and target roles must be different.');
return 1;
}
$existingPermissionsCount = CampaignPermission::where('campaign_role_id', $targetRole->id)->count();
if ($existingPermissionsCount > 0) {
if (! $this->confirm("The target role \"{$targetRole->name}\" already has {$existingPermissionsCount} permission(s). Clear them before syncing?")) {
$this->info('Sync cancelled.');
return 0;
}
CampaignPermission::where('campaign_role_id', $targetRole->id)->delete();
$this->info("Cleared {$existingPermissionsCount} existing permission(s) from \"{$targetRole->name}\".");
}
$sourceRole->duplicate($targetRole);
$createdCount = CampaignPermission::where('campaign_role_id', $targetRole->id)->count();
$this->info("Successfully copied {$createdCount} permission(s) from \"{$sourceRole->name}\" to \"{$targetRole->name}\".");
return 0;
}
}
================================================
FILE: app/Console/Commands/Campaigns/PopulateCommand.php
================================================
<?php
namespace App\Console\Commands\Campaigns;
use App\Jobs\Campaigns\Populate;
use App\Models\Campaign;
use App\Services\StarterService;
use Illuminate\Console\Command;
class PopulateCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'campaigns:populate {campaign}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Populate a campaign with the starter kit';
protected StarterService $starterService;
public function __construct(StarterService $starterService)
{
$this->starterService = $starterService;
parent::__construct();
}
/**
* Execute the console command.
*/
public function handle()
{
$campaignId = $this->argument('campaign');
$campaign = Campaign::where('id', $campaignId)->first();
if ($campaign) {
Populate::dispatch($campaign);
} else {
$this->info('Invalid campaign ID');
}
}
}
================================================
FILE: app/Console/Commands/Campaigns/VisibileEntityCountCommand.php
================================================
<?php
namespace App\Console\Commands\Campaigns;
use App\Models\Campaign;
use App\Services\Campaign\Counters\VisibleEntityCountService;
use App\Traits\HasJobLog;
use Illuminate\Console\Command;
class VisibileEntityCountCommand extends Command
{
use HasJobLog;
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'campaigns:public';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Update the visible entity count for public campaigns';
/** @var int Number of processed elements */
protected int $count = 0;
/**
* Create a new command instance.
*
* @return void
*/
public function __construct(protected VisibleEntityCountService $countService)
{
parent::__construct();
}
/**
* Execute the console command.
*/
public function handle(): void
{
Campaign::public()->chunk(1000, function ($campaigns): void {
/** @var Campaign $campaign */
foreach ($campaigns as $campaign) {
$this->count++;
$this->countService->campaign($campaign)->process();
}
});
$log = "Updated {$this->count} public campaigns.";
$this->info($log);
$this->log($log);
}
}
================================================
FILE: app/Console/Commands/Cleanup/AnonymiseUserLogs.php
================================================
<?php
namespace App\Console\Commands\Cleanup;
use App\Services\Users\UserLogService;
use App\Traits\HasJobLog;
use Illuminate\Console\Command;
class AnonymiseUserLogs extends Command
{
use HasJobLog;
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'cleanup:anonymise-user-logs';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Anonymise User logs older than 30 days';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct(protected UserLogService $service)
{
parent::__construct();
}
/**
* Execute the console command.
*/
public function handle()
{
$this->service->anonymize();
$log = 'Cleaned up ' . $this->service->count() . ' logs PII.';
$this->info($log);
$this->log($log);
return 0;
}
}
================================================
FILE: app/Console/Commands/Cleanup/CleanupEntityLogs.php
================================================
<?php
namespace App\Console\Commands\Cleanup;
use App\Models\EntityLog;
use App\Traits\HasJobLog;
use Carbon\Carbon;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
class CleanupEntityLogs extends Command
{
use HasJobLog;
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'cleanup:entity-logs';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Cleanup entity log details';
/** @var int number of cleaned up logs */
protected int $count = 0;
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*/
public function handle()
{
$amount = config('entities.logs');
/**
* We don't delete logs here (that's handled by the MassPrunable trait), but instead, we remove
* the changelogs that are available to superboosted campaigns for up to $amount(30) days.
*/
EntityLog::where('created_at', '<=', Carbon::now()->subDays($amount)->toDateString())
->whereNotNull('changes')
->chunkById(100, function ($models): void {
$entityIds = [];
foreach ($models as $model) {
$entityIds[] = $model->id;
$this->count++;
}
$statement = 'UPDATE entity_logs SET changes = null WHERE id in(' .
implode(', ', $entityIds) .
') limit ' . count($entityIds);
DB::statement($statement);
});
$log = "Cleaned up {$this->count} entity logs.";
$this->info($log);
$this->log($log);
return 0;
}
}
================================================
FILE: app/Console/Commands/Cleanup/CleanupImages.php
================================================
<?php
namespace App\Console\Commands\Cleanup;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
class CleanupImages extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'cleanup:images {folder=w} {max=500} {dry=0}';
protected bool $dry = true;
/**
* The console command description.
*
* @var string
*/
protected $description = 'Delete old images from s3';
protected int $count = 0;
protected int $max = 0;
/**
* Execute the console command.
*/
public function handle()
{
$folder = $this->argument('folder');
$this->max = (int) $this->argument('max');
$dry = $this->argument('dry');
if ($dry === '1') {
$this->dry = false;
}
$this->info('Cleaning up ' . $folder . '/');
if ($this->dry) {
$this->warn('This is a dry run. Nothing will get deleted.');
}
$directories = Storage::directories($folder . '/');
$chunks = array_chunk($directories, 500);
foreach ($chunks as $chunk) {
$ids = [];
foreach ($chunk as $path) {
$ids[] = Str::after($path, $folder . '/');
}
// Get ids where a left join on the campaigns table has no result
$select = 'with u(id) as (values (' . implode('), (', $ids) . ')) ' .
'select u.id from u ' .
'left join campaigns as c on c.id = u.id ' .
'where c.id is null';
$db = DB::select($select);
$nullCampaigns = [];
foreach ($db as $campaign) {
$nullCampaigns[] = $campaign->id;
}
if (empty($nullCampaigns)) {
continue;
}
foreach ($nullCampaigns as $id) {
if (empty($id)) {
continue;
}
if (! $this->dry) {
$files = Storage::allFiles($folder . '/' . $id);
if (! empty($files)) {
Storage::delete($files);
}
Storage::deleteDirectory($folder . '/' . $id);
}
$this->count++;
}
if ($this->dry) {
$this->info('Would delete ' . $this->count . ' images/folders.');
$this->info(implode(',', $nullCampaigns));
}
if ($this->count > $this->max) {
$this->info('Reached max amount of ' . $this->max);
return;
}
}
if ($this->dry) {
return;
}
$this->info('Deleted ' . $this->count . ' images/folders.');
}
}
================================================
FILE: app/Console/Commands/Cleanup/CleanupTrashed.php
================================================
<?php
namespace App\Console\Commands\Cleanup;
use App\Models\Entity;
use App\Models\Post;
use App\Services\Entity\PurgeService;
use App\Services\Posts\PurgeService as PostPurgeService;
use App\Traits\HasJobLog;
use Carbon\Carbon;
use Exception;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
class CleanupTrashed extends Command
{
use HasJobLog;
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'cleanup:trashed';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Delete old trashed entities';
/**
* The recovery service
*/
protected PurgeService $service;
protected PostPurgeService $postService;
/**
* Create a new command instance.
*
* @return void
*/
public function __construct(PurgeService $service, PostPurgeService $postService)
{
parent::__construct();
$this->service = $service;
$this->postService = $postService;
}
/**
* Execute the console command.
*/
public function handle()
{
$delay = Carbon::now()->subDays(config('entities.hard_delete'))->toDateString();
$log = '';
$this->info('Looking to purge entities and posts deleted since ' . $delay);
DB::beginTransaction();
try {
Entity::onlyTrashed()
->where('deleted_at', '<=', $delay)
->allCampaigns()
->with(['campaign', 'entityType'])
->has('campaign')
->chunkById(1000, function ($entities): void {
$this->info('Chunk deleting ' . count($entities) . ' entities.');
foreach ($entities as $entity) {
// dump($entity->name . ' (' . $entity->entityType->code . ')');
$this->service->trash($entity);
}
});
Post::onlyTrashed()
->where('deleted_at', '<=', $delay)
->chunkById(1000, function ($posts): void {
$this->info('Chunk deleting ' . count($posts) . ' posts.');
/** @var Post $post */
foreach ($posts as $post) {
$this->postService->trash($post);
}
});
DB::commit();
} catch (Exception $e) {
$this->error($e->getMessage());
$log .= '<br />' . $e->getMessage();
DB::rollBack();
}
$this->info('');
$this->info('Deleted ' . $this->service->count() . ' trashed entities.');
$log .= "\n" . 'Deleted ' . $this->service->count() . ' trashed entities.';
$this->info('Deleted ' . $this->postService->count() . ' trashed posts.');
$log .= "\n" . 'Deleted ' . $this->postService->count() . ' trashed posts.';
$this->log($log);
return 0;
}
}
================================================
FILE: app/Console/Commands/Cleanup/CleanupTrashedCampaigns.php
================================================
<?php
namespace App\Console\Commands\Cleanup;
use App\Models\Campaign;
use App\Observers\CampaignObserver;
use App\Services\Campaign\PurgeService;
use App\Traits\HasJobLog;
use Illuminate\Console\Command;
class CleanupTrashedCampaigns extends Command
{
use HasJobLog;
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'cleanup:trashed-campaigns';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Delete old trashed campaigns';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct(protected PurgeService $service)
{
parent::__construct();
}
/**
* Execute the console command.
*/
public function handle()
{
Campaign::observe(CampaignObserver::class);
$count = $this->service->purgeDeleted();
$log = 'Deleted ' . $count . ' trashed campaigns.';
$this->info($log);
$this->log($log . ' ' . implode(',', $this->service->ids()));
return 0;
}
}
================================================
FILE: app/Console/Commands/Cleanup/CleanupUsers.php
================================================
<?php
namespace App\Console\Commands\Cleanup;
use App\Services\Users\PurgeService;
use Carbon\Carbon;
use Illuminate\Console\Command;
class CleanupUsers extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'users:purge {dry=0} {limit=1000}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Purge accounts';
public function __construct(protected PurgeService $service)
{
parent::__construct();
}
/**
* Execute the console command.
*/
public function handle(): void
{
$this->info(Carbon::now());
$dry = $this->argument('dry');
if ($dry === '0') {
$this->service->real();
}
$limit = (int) $this->argument('limit');
$this->service->limit($limit);
/*
$cutoff = Carbon::now()->subYears(1);
$count = $service->date($cutoff)->empty();
$this->info(Carbon::now() . ': Empty scheduled ' . $count . ' users for cleanup.');
$cutoff = Carbon::now()->subYears(2);
$count = $service->date($cutoff)->example();
$this->info(Carbon::now() . ': Example scheduled ' . $count . ' users for cleanup.');
*/
$count = $this->service->firstWarning();
$this->info(Carbon::now() . ': ' . $count . ' inactive users notified (first warning)');
$count = $this->service->secondWarning();
$this->info(Carbon::now() . ': ' . $count . ' inactive users notified (second warning)');
$count = $this->service->purge();
$this->info(Carbon::now() . ': ' . $count . ' inactive users purged');
}
}
================================================
FILE: app/Console/Commands/Entities/CalendarAdvancer.php
================================================
<?php
namespace App\Console\Commands\Entities;
use App\Jobs\CalendarsClearElapsed;
use App\Models\Calendar;
use App\Services\Calendars\AdvancerService;
use App\Traits\HasJobLog;
use Exception;
use Illuminate\Console\Command;
class CalendarAdvancer extends Command
{
use HasJobLog;
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'calendar:advance';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Increment the date of all advancing calendars.';
/** Calendars that were advanced */
protected int $count = 0;
/** Errors that happened */
protected array $errors = [];
/**
* Create a new command instance.
*
* @return void
*/
public function __construct(protected AdvancerService $service)
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
Calendar::where('is_incrementing', true)->chunkById(500, function ($calendars): void {
/** @var Calendar $calendar */
foreach ($calendars as $calendar) {
try {
$this->service->calendar($calendar)->advance();
// Consoles don't have observers at the moment because Jay makes terrible life choices
CalendarsClearElapsed::dispatch($calendar);
$this->count++;
} catch (Exception $e) {
$this->errors[$calendar->id] = $e->getMessage();
}
}
});
$log = "Advanced {$this->count} calendars.";
$this->info($log);
if (! empty($this->errors)) {
$this->error('Errors for ' . count($this->errors) . ' calendars.');
$this->error(implode(', ', array_keys($this->errors)));
$log .= "\n" . 'Errors for ' . count($this->errors) . ' calendars.';
$log .= "\n" . implode(', ', array_keys($this->errors));
}
$this->log($log);
return 0;
}
}
================================================
FILE: app/Console/Commands/Entities/ChildlessEntities.php
================================================
<?php
namespace App\Console\Commands\Entities;
use App\Models\Entity;
use Illuminate\Console\Command;
use Illuminate\Support\Str;
class ChildlessEntities extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'entities:childless';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Find entities with no children';
protected $traces = [];
protected $total = 0;
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$entities = [];
$types = config('entities.ids');
foreach ($types as $type => $id) {
$entities[] = $type;
}
foreach ($entities as $type) {
$plural = Str::plural($type);
$this->info('checking ' . $plural);
Entity::select('entities.*')
->where('entities.type', $type)
->leftJoin($plural . ' as f', 'f.id', 'entities.entity_id')
->whereNull('f.id')
->with(Str::camel($type))
->chunk(1000, function ($models) use ($type): void {
foreach ($models as $model) {
$this->trace($model, $type);
}
if (! empty($this->traces)) {
$this->info(implode(', ', $this->traces));
$this->traces = [];
}
});
$this->info('');
}
$this->warn('Found ' . $this->total . ' childless entities.');
return 0;
}
protected function trace(Entity $entity, string $type): void
{
$this->traces[] = $entity->id;
$this->total++;
/*if (count($this->traces) > 100) {
$this->info(implode(', ', $this->traces));
$this->traces = [];
}*/
}
}
================================================
FILE: app/Console/Commands/Entities/MapChunk.php
================================================
<?php
namespace App\Console\Commands\Entities;
use App\Jobs\ChunkMapJob;
use App\Models\Map;
use Illuminate\Console\Command;
use Illuminate\Foundation\Bus\PendingDispatch;
class MapChunk extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'map:chunk {map : The map ID}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Chunks a map\'s image into tiles.';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* @return int
*/
public function handle()
{
$mapID = (int) $this->argument('map');
$map = Map::find($mapID);
if (empty($map)) {
$this->error('Unknown map #' . $mapID);
return 0;
}
$this->dispatch($mapID);
$this->info('ChunkMapJob queues for map #' . $mapID);
return 0;
}
/**
* @return PendingDispatch
*/
protected function dispatch(int $mapID)
{
return ChunkMapJob::dispatch($mapID);
}
}
================================================
FILE: app/Console/Commands/InstallCommand.php
================================================
<?php
namespace App\Console\Commands;
use App\Models\EntityType;
use Exception;
use Illuminate\Console\Command;
class InstallCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'kanka:install';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Set up Kanka\'s boilerplate';
/**
* Execute the console command.
*/
public function handle()
{
try {
if (EntityType::find(1)) {
$this->error('Kanka has already been installed.');
$this->info('Check it out at ' . config('app.url') . ':' . env('APP_PORT'));
return;
}
} catch (Exception) {
}
$this->call('key:generate');
$this->call('migrate');
$this->call('db:seed');
$this->call('passport:install');
$this->info('Kanka successfully installed.');
$this->info('Check it out at ' . config('app.url') . ':' . env('APP_PORT'));
}
}
================================================
FILE: app/Console/Commands/Metrics/MetricsGa4.php
================================================
<?php
namespace App\Console\Commands\Metrics;
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient;
use Google\Analytics\Data\V1beta\DateRange;
use Google\Analytics\Data\V1beta\Dimension;
use Google\Analytics\Data\V1beta\Filter;
use Google\Analytics\Data\V1beta\Filter\InListFilter;
use Google\Analytics\Data\V1beta\Filter\StringFilter;
use Google\Analytics\Data\V1beta\Filter\StringFilter\MatchType;
use Google\Analytics\Data\V1beta\FilterExpression;
use Google\Analytics\Data\V1beta\FilterExpressionList;
use Google\Analytics\Data\V1beta\Metric;
use Google\Analytics\Data\V1beta\OrderBy;
use Google\Analytics\Data\V1beta\OrderBy\DimensionOrderBy;
use Google\Analytics\Data\V1beta\OrderBy\DimensionOrderBy\OrderType;
use Google\Analytics\Data\V1beta\OrderBy\MetricOrderBy;
use Google\Analytics\Data\V1beta\RunReportRequest;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Storage;
class MetricsGa4 extends Command
{
protected $signature = 'metrics:ga4 {--days=28 : Number of days to look back}';
protected $description = 'Pull GA4 metrics and save as a markdown report to storage/app/metrics/';
public function handle(): int
{
$days = (int) $this->option('days');
$credentialsPath = config('tracking.ga_credential_path');
$propertyId = config('tracking.ga_property_id');
if (empty($credentialsPath) || empty($propertyId)) {
$this->error('GA4_CREDENTIALS_PATH and GA4_PROPERTY_ID must be configured.');
return Command::FAILURE;
}
$client = new BetaAnalyticsDataClient(['credentials' => $credentialsPath]);
$property = "properties/{$propertyId}";
$dateRange = new DateRange([
'start_date' => "{$days}daysAgo",
'end_date' => 'today',
]);
$startDate = now()->subDays($days)->format('Y-m-d');
$endDate = now()->format('Y-m-d');
$sections = [
'# GA4 Metrics Report',
"_Date range: {$startDate} — {$endDate} ({$days} days)_",
$this->homepageSessions($client, $property, $dateRange),
$this->registerPageSources($client, $property, $dateRange),
$this->registerCtaClicks($client, $property, $dateRange),
$this->scrollDepth($client, $property, $dateRange),
];
$report = implode("\n\n", $sections);
$filename = 'metrics/ga4-' . now()->format('Y-m-d') . '.md';
Storage::put($filename, $report);
$this->line($report);
$this->newLine();
$this->info("Saved to storage/app/{$filename}");
return Command::SUCCESS;
}
private function homepageSessions(BetaAnalyticsDataClient $client, string $property, DateRange $dateRange): string
{
$response = $client->runReport(new RunReportRequest([
'property' => $property,
'date_ranges' => [$dateRange],
'metrics' => [
new Metric(['name' => 'sessions']),
new Metric(['name' => 'engagementRate']),
],
'dimension_filter' => new FilterExpression([
'and_group' => new FilterExpressionList([
'expressions' => [
new FilterExpression([
'filter' => new Filter([
'field_name' => 'pagePath',
'string_filter' => new StringFilter([
'match_type' => MatchType::EXACT,
'value' => '/',
]),
]),
]),
new FilterExpression([
'not_expression' => new FilterExpression([
'filter' => new Filter([
'field_name' => 'country',
'in_list_filter' => new InListFilter([
'values' => ['China', 'Singapore', 'Vietnam'],
]),
]),
]),
]),
],
]),
]),
]));
$lines = [
'## Homepage Sessions (`/`)',
'_Excludes traffic from China, Singapore, and Vietnam._',
'',
'| Sessions | Engagement Rate |',
'| --- | --- |',
];
if ($response->getRowCount() === 0) {
$lines[] = '| — | — |';
} else {
foreach ($response->getRows() as $row) {
$sessions = $row->getMetricValues()[0]->getValue();
$engagementRate = round((float) $row->getMetricValues()[1]->getValue() * 100, 2);
$lines[] = "| {$sessions} | {$engagementRate}% |";
}
}
return implode("\n", $lines);
}
private function registerPageSources(BetaAnalyticsDataClient $client, string $property, DateRange $dateRange): string
{
$response = $client->runReport(new RunReportRequest([
'property' => $property,
'date_ranges' => [$dateRange],
'dimensions' => [
new Dimension(['name' => 'sessionSource']),
],
'metrics' => [
new Metric(['name' => 'activeUsers']),
],
'dimension_filter' => new FilterExpression([
'filter' => new Filter([
'field_name' => 'pagePath',
'string_filter' => new StringFilter([
'match_type' => MatchType::EXACT,
'value' => '/register',
]),
]),
]),
'order_bys' => [
new OrderBy([
'metric' => new MetricOrderBy(['metric_name' => 'activeUsers']),
'desc' => true,
]),
],
]));
$lines = [
'## Register Page Active Users by Session Source (`/register`)',
'',
'| Source | Active Users |',
'| --- | --- |',
];
if ($response->getRowCount() === 0) {
$lines[] = '| — | — |';
} else {
foreach ($response->getRows() as $row) {
$source = $row->getDimensionValues()[0]->getValue();
$users = $row->getMetricValues()[0]->getValue();
$lines[] = "| {$source} | {$users} |";
}
}
return implode("\n", $lines);
}
private function registerCtaClicks(BetaAnalyticsDataClient $client, string $property, DateRange $dateRange): string
{
$response = $client->runReport(new RunReportRequest([
'property' => $property,
'date_ranges' => [$dateRange],
'dimensions' => [
new Dimension(['name' => 'customEvent:cta_location']),
],
'metrics' => [
new Metric(['name' => 'eventCount']),
],
'dimension_filter' => new FilterExpression([
'filter' => new Filter([
'field_name' => 'eventName',
'string_filter' => new StringFilter([
'match_type' => MatchType::EXACT,
'value' => 'register_cta_click',
]),
]),
]),
'order_bys' => [
new OrderBy([
'metric' => new MetricOrderBy(['metric_name' => 'eventCount']),
'desc' => true,
]),
],
]));
$lines = [
'## `register_cta_click` Events by CTA Location',
'',
'| CTA Location | Event Count |',
'| --- | --- |',
];
if ($response->getRowCount() === 0) {
$lines[] = '| — | — |';
} else {
foreach ($response->getRows() as $row) {
$location = $row->getDimensionValues()[0]->getValue();
$count = $row->getMetricValues()[0]->getValue();
$lines[] = "| {$location} | {$count} |";
}
}
return implode("\n", $lines);
}
private function scrollDepth(BetaAnalyticsDataClient $client, string $property, DateRange $dateRange): string
{
$response = $client->runReport(new RunReportRequest([
'property' => $property,
'date_ranges' => [$dateRange],
'dimensions' => [
new Dimension(['name' => 'percentScrolled']),
],
'metrics' => [
new Metric(['name' => 'sessions']),
],
'dimension_filter' => new FilterExpression([
'filter' => new Filter([
'field_name' => 'pagePath',
'string_filter' => new StringFilter([
'match_type' => MatchType::EXACT,
'value' => '/',
]),
]),
]),
'order_bys' => [
new OrderBy([
'dimension' => new DimensionOrderBy([
'dimension_name' => 'percentScrolled',
'order_type' => OrderType::NUMERIC,
]),
'desc' => false,
]),
],
]));
$lines = [
'## Scroll Depth Distribution (`/`)',
'',
'| Scroll Depth | Sessions |',
'| --- | --- |',
];
if ($response->getRowCount() === 0) {
$lines[] = '| — | — |';
} else {
foreach ($response->getRows() as $row) {
$depth = $row->getDimensionValues()[0]->getValue();
$sessions = $row->getMetricValues()[0]->getValue();
$lines[] = "| {$depth}% | {$sessions} |";
}
}
return implode("\n", $lines);
}
}
================================================
FILE: app/Console/Commands/Migrations/BookmarkEntityType.php
================================================
<?php
namespace App\Console\Commands\Migrations;
use App\Models\EntityType;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
class BookmarkEntityType extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'migrate:bookmarks';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Migrate bookmarks to the new entity type id foreign key';
/**
* Execute the console command.
*/
public function handle()
{
$this->info('Migrating bookmarks to the new entity_type_id property');
$entityTypes = EntityType::default()->get();
foreach ($entityTypes as $entityType) {
$statement = 'UPDATE bookmarks SET entity_type_id = ' . $entityType->id . ' WHERE type = \'' . $entityType->code . '\'';
DB::statement($statement);
}
$this->info('Finished');
}
}
================================================
FILE: app/Console/Commands/Migrations/Cdn.php
================================================
<?php
namespace App\Console\Commands\Migrations;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
class Cdn extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'cdn:migrate';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Migrate cdn urls';
/**
* Execute the console command.
*/
public function handle()
{
$tables = [
// 'posts' => 'entry',
// 'timeline_eras' => 'entry',
// 'timeline_elements' => 'entry',
// 'quest_elements' => 'entry',
// 'attributes' => 'value',
// 'campaigns' => 'entry',
// 'entities' => 'entry',
// 'map_layers' => 'entry',
// 'character_traits' => 'entry',
'plugin_versions' => 'content',
];
$old = 'https://kanka-user-assets.s3.eu-central-1.amazonaws.com/';
$new = 'https://cdn-ugc.kanka.io/';
$batchSize = 1000;
foreach ($tables as $tableName => $column) {
$this->info("Migrating $tableName ($column)...");
do {
$affected = DB::update("
UPDATE `$tableName`
SET `$column` = REPLACE(`$column`, ?, ?)
WHERE `$column` LIKE ?
LIMIT $batchSize
", [$old, $new, "%$old%"]);
$this->info(" Updated $affected rows...");
} while ($affected > 0);
}
$tableName = 'plugin_versions';
$column = 'json';
$old = 'kanka-user-assets.s3.eu-central-1.amazonaws.com';
$new = 'cdn-ugc.kanka.io';
$this->info("Migrating $tableName ($column)...");
do {
$affected = DB::update("
UPDATE `$tableName`
SET `$column` = REPLACE(`$column`, ?, ?)
WHERE `$column` LIKE ?
LIMIT $batchSize
", [$old, $new, "%$old%"]);
$this->info(" Updated $affected rows...");
} while ($affected > 0);
$this->info('URL replacement completed.');
}
}
================================================
FILE: app/Console/Commands/Migrations/MigrateEntityStatuses.php
================================================
<?php
namespace App\Console\Commands\Migrations;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
class MigrateEntityStatuses extends Command
{
protected $signature = 'migrate:entity-statuses';
protected $description = 'Migrate statuses from child tables to the entities table';
public function handle(): void
{
$this->migrateCharacters();
$this->migrateQuests();
$this->migrateBooleans('creature', 'creatures', [
'is_dead' => 'dead',
'is_extinct' => 'extinct',
]);
$this->migrateBooleans('location', 'locations', [
'is_destroyed' => 'destroyed',
]);
$this->migrateBooleans('organisation', 'organisations', [
'is_defunct' => 'defunct',
]);
$this->migrateBooleans('race', 'races', [
'is_extinct' => 'extinct',
]);
$this->migrateBooleans('family', 'families', [
'is_extinct' => 'extinct',
]);
$this->info('Finished migrating entity statuses.');
}
/**
* Migrate character statuses (0=alive, 1=dead, 2=missing) to entities.status_id.
*/
protected function migrateCharacters(): void
{
$characterTypeId = config('entities.ids.character');
$mapping = [
0 => 'alive',
1 => 'dead',
2 => 'missing',
];
$statusIds = $this->getCategoryStatusIds($characterTypeId, $mapping);
foreach ($mapping as $oldValue => $key) {
if (! isset($statusIds[$key])) {
$this->warn("Category status '{$key}' not found for characters, skipping.");
continue;
}
$updated = DB::table('entities')
->join('characters', function ($join) use ($characterTypeId) {
$join->on('entities.entity_id', '=', 'characters.id')
->where('entities.type_id', '=', $characterTypeId);
})
->where('characters.status_id', $oldValue)
->update(['entities.status_id' => $statusIds[$key]]);
$this->info("Characters [{$key}]: {$updated} entities updated.");
}
}
/**
* Migrate quest statuses (0=notStarted, 1=ongoing, 2=completed, 3=abandoned) to entities.status_id.
*/
protected function migrateQuests(): void
{
$questTypeId = config('entities.ids.quest');
$mapping = [
0 => 'not_started',
1 => 'ongoing',
2 => 'completed',
3 => 'abandoned',
];
$statusIds = $this->getCategoryStatusIds($questTypeId, $mapping);
foreach ($mapping as $oldValue => $key) {
if (! isset($statusIds[$key])) {
$this->warn("Category status '{$key}' not found for quests, skipping.");
continue;
}
$updated = DB::table('entities')
->join('quests', function ($join) use ($questTypeId) {
$join->on('entities.entity_id', '=', 'quests.id')
->where('entities.type_id', '=', $questTypeId);
})
->where('quests.status_id', $oldValue)
->update(['entities.status_id' => $statusIds[$key]]);
$this->info("Quests [{$key}]: {$updated} entities updated.");
}
}
/**
* Migrate boolean columns (is_dead, is_extinct, etc.) to entities.status_id.
*
* @param array<string, string> $columns [boolean_column => status_key]
*/
protected function migrateBooleans(string $entityTypeKey, string $table, array $columns): void
{
$typeId = config('entities.ids.' . $entityTypeKey);
$statusIds = $this->getCategoryStatusIds($typeId, $columns);
foreach ($columns as $column => $key) {
if (! isset($statusIds[$key])) {
$this->warn("Category status '{$key}' not found for {$table}, skipping.");
continue;
}
$updated = DB::table('entities')
->join($table, function ($join) use ($table, $typeId) {
$join->on('entities.entity_id', '=', $table . '.id')
->where('entities.type_id', '=', $typeId);
})
->where($table . '.' . $column, true)
->whereNull('entities.status_id')
->update(['entities.status_id' => $statusIds[$key]]);
$this->info(ucfirst($entityTypeKey) . " [{$key}]: {$updated} entities updated.");
}
}
/**
* Get category_statuses.id keyed by status key for a given entity type.
*
* @param array<int|string, string> $mapping
* @return array<string, int>
*/
protected function getCategoryStatusIds(int $categoryId, array $mapping): array
{
return DB::table('category_statuses')
->where('category_id', $categoryId)
->whereIn('key', array_values($mapping))
->pluck('id', 'key')
->toArray();
}
}
================================================
FILE: app/Console/Commands/Migrations/MigrateStatusFilters.php
================================================
<?php
namespace App\Console\Commands\Migrations;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
class MigrateStatusFilters extends Command
{
protected $signature = 'migrate:status-filters';
protected $description = 'Migrate old status filter params in bookmarks and dashboard widgets to the new status_id format';
/** @var array<string, array<string, string>> Old boolean column → status key, keyed by entity type code */
protected array $booleanMap = [
'creature' => ['is_dead' => 'dead', 'is_extinct' => 'extinct'],
'location' => ['is_destroyed' => 'destroyed'],
'organisation' => ['is_defunct' => 'defunct'],
'race' => ['is_extinct' => 'extinct'],
'family' => ['is_extinct' => 'extinct'],
];
/** @var array<int, string> Character old enum value → status key */
protected array $characterMap = [0 => 'alive', 1 => 'dead', 2 => 'missing'];
/** @var array<int, string> Quest old enum value → status key */
protected array $questMap = [0 => 'not_started', 1 => 'ongoing', 2 => 'completed', 3 => 'abandoned'];
/** @var array<int, array<string, int>> Cached category_status IDs keyed by entity_type_id then status key */
protected array $statusCache = [];
public function handle(): void
{
$this->migrateBookmarks();
$this->migrateWidgets();
$this->info('Finished migrating status filters.');
}
protected function migrateBookmarks(): void
{
$bookmarks = DB::table('bookmarks')
->whereNotNull('filters')
->where('filters', '!=', '')
->whereNotNull('entity_type_id')
->get(['id', 'filters', 'entity_type_id']);
$updated = 0;
foreach ($bookmarks as $bookmark) {
$params = $this->parseFilterString($bookmark->filters);
if ($this->migrateFilterParams($params, $bookmark->entity_type_id)) {
DB::table('bookmarks')
->where('id', $bookmark->id)
->update(['filters' => $this->buildFilterString($params)]);
$updated++;
}
}
$this->info("Bookmarks: {$updated} updated.");
}
protected function migrateWidgets(): void
{
$widgets = DB::table('campaign_dashboard_widgets')
->whereNotNull('entity_type_id')
->whereNotNull('config')
->get(['id', 'config', 'entity_type_id']);
$updated = 0;
foreach ($widgets as $widget) {
$config = json_decode($widget->config, true);
if (empty($config['filters']) || ! is_string($config['filters'])) {
continue;
}
$params = $this->parseFilterString($config['filters']);
if ($this->migrateFilterParams($params, $widget->entity_type_id)) {
$config['filters'] = $this->buildFilterString($params);
DB::table('campaign_dashboard_widgets')
->where('id', $widget->id)
->update(['config' => json_encode($config)]);
$updated++;
}
}
$this->info("Widgets: {$updated} updated.");
}
/**
* Replace old status filter params with the new status_id param.
*
* @return bool True if any changes were made
*/
protected function migrateFilterParams(array &$params, int $entityTypeId): bool
{
$changed = false;
// Handle character/quest enum status_id values
$characterTypeId = config('entities.ids.character');
$questTypeId = config('entities.ids.quest');
if (isset($params['status_id']) && ($entityTypeId === $characterTypeId || $entityTypeId === $questTypeId)) {
$oldValue = (int) $params['status_id'];
$map = $entityTypeId === $characterTypeId ? $this->characterMap : $this->questMap;
if (isset($map[$oldValue])) {
$statusId = $this->resolveStatusId($entityTypeId, $map[$oldValue]);
if ($statusId !== null) {
$params['status_id'] = (string) $statusId;
$changed = true;
}
}
}
// Handle boolean columns (is_dead, is_defunct, is_destroyed, is_extinct)
$entityTypeCode = $this->resolveEntityTypeCode($entityTypeId);
if ($entityTypeCode === null || ! isset($this->booleanMap[$entityTypeCode])) {
return $changed;
}
foreach ($this->booleanMap[$entityTypeCode] as $oldParam => $statusKey) {
if (! isset($params[$oldParam])) {
continue;
}
$oldValue = (int) $params[$oldParam];
unset($params[$oldParam]);
$changed = true;
// Value of 0 means "not this status", just remove the old param
if ($oldValue === 0) {
continue;
}
$statusId = $this->resolveStatusId($entityTypeId, $statusKey);
if ($statusId !== null) {
$params['status_id'] = (string) $statusId;
}
}
return $changed;
}
protected function resolveStatusId(int $entityTypeId, string $key): ?int
{
if (! isset($this->statusCache[$entityTypeId])) {
$this->statusCache[$entityTypeId] = DB::table('category_statuses')
->where('category_id', $entityTypeId)
->pluck('id', 'key')
->toArray();
}
return $this->statusCache[$entityTypeId][$key] ?? null;
}
protected function resolveEntityTypeCode(int $entityTypeId): ?string
{
$ids = config('entities.ids');
foreach ($ids as $code => $id) {
if ($id === $entityTypeId) {
return $code;
}
}
return null;
}
/**
* @return array<string, string>
*/
protected function parseFilterString(string $filters): array
{
parse_str($filters, $params);
return $params;
}
/**
* @param array<string, string> $params
*/
protected function buildFilterString(array $params): string
{
return http_build_query($params);
}
}
================================================
FILE: app/Console/Commands/Migrations/MigrateSubMentions.php
================================================
<?php
namespace App\Console\Commands\Migrations;
use App\Models\EntityMention;
use Carbon\Carbon;
use Illuminate\Console\Command;
class MigrateSubMentions extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'mentions:migrate-sub';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Update mentions linked to quest elements, timelines and posts to be sortable by name';
protected int $count = 0;
/**
* Execute the console command.
*/
public function handle(): void
{
$start = Carbon::now();
$this->warn('Start at ' . $start);
EntityMention::with([
'questElement' => function ($sub) {
$sub->select('id', 'name', 'quest_id');
},
'questElement.quest' => function ($sub) {
$sub->select('id', 'name', 'is_private');
},
'questElement.quest.entity' => function ($sub) {
$sub->select('id', 'entity_id', 'type_id');
}])
->whereNotNull('quest_element_id')
->whereNull('entity_id')
->has('questElement')
->has('questElement.quest')
->has('questElement.quest.entity')
->chunkById(500, function ($mentions) {
foreach ($mentions as $mention) {
$mention->entity_id = $mention->questElement->quest->entity->id;
$mention->saveQuietly();
$this->count++;
}
});
$this->info('Migrated ' . $this->count . ' quest element mentions.');
$this->count = 0;
EntityMention::with([
'timelineElement' => function ($sub) {
$sub->select('id', 'name', 'timeline_id');
},
'timelineElement.timeline' => function ($sub) {
$sub->select('id', 'name', 'is_private');
},
'timelineElement.timeline.entity' => function ($sub) {
$sub->select('id', 'entity_id', 'type_id');
}])
->whereNotNull('timeline_element_id')
->whereNull('entity_id')
->has('timelineElement')
->has('timelineElement.timeline')
->has('timelineElement.timeline.entity')
->chunkById(500, function ($mentions) {
foreach ($mentions as $mention) {
$mention->entity_id = $mention->timelineElement->timeline->entity->id;
$mention->saveQuietly();
$this->count++;
}
});
$this->info('Migrated ' . $this->count . ' timeline element mentions.');
$this->count = 0;
EntityMention::with([
'post' => function ($sub) {
$sub->select('id', 'entity_id');
}])
->whereNotNull('post_id')
->whereNull('entity_id')
->has('post')
->has('post.entity')
->chunkById(5000, function ($mentions) {
foreach ($mentions as $mention) {
$mention->entity_id = $mention->post->entity_id;
$mention->saveQuietly();
$this->count++;
}
});
$this->info('Migrated ' . $this->count . ' post mentions.');
$now = Carbon::now();
$this->warn('End in ' . $now->diffInSeconds($start) . ' seconds at ' . $now);
}
}
================================================
FILE: app/Console/Commands/Migrations/NewsletterSubCommand.php
================================================
<?php
namespace App\Console\Commands\Migrations;
use App\Models\User;
use App\Services\NewsletterService;
use Illuminate\Console\Command;
class NewsletterSubCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'migrate:newsletter-sub';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Update users who are subbed and want the newsletter to be in the correct mailerlite group';
protected int $count = 0;
public function __construct(protected NewsletterService $service)
{
parent::__construct();
}
/**
* Execute the console command.
*/
public function handle()
{
User::whereNotNull('pledge')
->where('pledge', '<>', '')
->where('settings', 'like', '%mail_release%')
->chunk(100, function ($users) {
foreach ($users as $user) {
if (! $user->mail_release) {
continue;
}
$options = [
'releases' => (bool) $user->mail_release,
];
if ($this->service->user($user)->update($options)) {
$this->count++;
continue;
}
$this->error($this->service->error()->getMessage());
}
sleep(60);
});
$this->info('Processed ' . $this->count . ' users.');
}
}
================================================
FILE: app/Console/Commands/Report/Accounts.php
================================================
<?php
namespace App\Console\Commands\Report;
use App\Jobs\Discord\ReportJob;
use App\Services\Report\AccountsReportService;
use Illuminate\Console\Command;
class Accounts extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'report:accounts {--days=7}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Generate a new accounts report';
/**
* Execute the console command.
*/
public function handle(AccountsReportService $service): void
{
$days = (int) $this->option('days');
$current = $service->getStats(now()->subDays($days), now());
$previous = $service->getStats(now()->subDays($days * 2), now()->subDays($days));
$title = "{$service->name()} (Last {$days} days)";
$this->info($title);
$this->info(str_repeat('=', 60));
$this->newLine();
foreach ($service->buildTerminalLines($current, $previous) as $line) {
$this->line($line);
}
ReportJob::dispatch($title, $service->buildDiscordBody($current, $previous));
}
}
================================================
FILE: app/Console/Commands/Report/Churn.php
================================================
<?php
namespace App\Console\Commands\Report;
use App\Jobs\Discord\ReportJob;
use App\Services\Report\ChurnReportService;
use Illuminate\Console\Command;
class Churn extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'report:churn {--days=7}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Generate churn report';
/**
* Execute the console command.
*/
public function handle(ChurnReportService $service): void
{
$days = (int) $this->option('days');
$current = $service->getStats(now()->subDays($days), now());
$previous = $service->getStats(now()->subDays($days * 2), now()->subDays($days));
$title = "{$service->name()} (Last {$days} days)";
$this->info($title);
$this->info(str_repeat('=', 60));
$this->newLine();
foreach ($service->buildTerminalLines($current, $previous) as $line) {
$this->line($line);
}
ReportJob::dispatch($title, $service->buildDiscordBody($current, $previous));
}
}
================================================
FILE: app/Console/Commands/Report/Onboarding.php
================================================
<?php
namespace App\Console\Commands\Report;
use App\Jobs\Discord\ReportJob;
use App\Services\Report\OnboardingReportService;
use Illuminate\Console\Command;
class Onboarding extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'report:onboarding {--days=7}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Generate onboarding funnel report';
/**
* Execute the console command.
*/
public function handle(OnboardingReportService $service): void
{
$days = (int) $this->option('days');
$current = $service->getStats(now()->subDays($days), now());
$previous = $service->getStats(now()->subDays($days * 2), now()->subDays($days));
$title = "{$service->name()} (Last {$days} days)";
$this->info($title);
$this->info(str_repeat('=', 60));
$this->newLine();
foreach ($service->buildTerminalLines($current, $previous) as $line) {
$this->line($line);
}
ReportJob::dispatch($title, $service->buildDiscordBody($current, $previous));
}
}
================================================
FILE: app/Console/Commands/Report/Weekly.php
================================================
<?php
namespace App\Console\Commands\Report;
use App\Jobs\Discord\ReportJob;
use App\Services\Report\WeeklyReportService;
use Illuminate\Console\Command;
class Weekly extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'report:weekly {--days=7}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Generate a new weekly report';
/**
* Execute the console command.
*/
public function handle(WeeklyReportService $service): void
{
$days = (int) $this->option('days');
// Ex: Feb 10-16, 2026
$period = now()->subDays($days)->format('M j') . '-' . now()->format('j, Y');
$current = $service->getStats(now()->subDays($days), now());
$previous = $service->getStats(now()->subDays($days * 2), now()->subDays($days));
$title = "**{$service->name()}** - $period";
$this->info($title);
$this->info(str_repeat('=', 60));
$this->newLine();
foreach ($service->buildTerminalLines($current, $previous) as $line) {
$this->line($line);
}
ReportJob::dispatch($title, $service->buildDiscordBody($current, $previous));
}
}
================================================
FILE: app/Console/Commands/SetupMeilisearch.php
================================================
<?php
namespace App\Console\Commands;
use App\Models\Attribute;
use App\Models\Entity;
use App\Models\Post;
use App\Models\QuestElement;
use App\Models\TimelineElement;
use Carbon\Carbon;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Number;
use Meilisearch\Client;
class SetupMeilisearch extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'setup:meilisearch
{--c|chunk= : The number of records to import at a time (Defaults to configuration value: `scout.chunk.searchable`)}
';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Setup meilisearch';
/**
* Execute the console command.
*/
public function handle()
{
if (config('app.lazy')) {
$this->error('Config error:');
$this->error('Temporarily remove APP_LAZY=true from your .env file.');
return;
}
// Update Non Separator Tokens for entity mentions
$start = Carbon::now();
$this->info('Meilisearch import started at ' . date('H:i:s'));
$client = new Client(config('scout.meilisearch.host'), config('scout.meilisearch.key'));
$client->getKeys();
$client->deleteIndex('entities');
$client->index('entities')->resetSeparatorTokens();
$client->index('entities')->updateNonSeparatorTokens([':']);
$client->index('entities')->updateFilterableAttributes(['campaign_id']);
$models = [
Attribute::class,
Entity::class,
Post::class,
QuestElement::class,
TimelineElement::class,
];
foreach ($models as $model) {
$time = Carbon::now();
$object = new $model;
$this->info('Importing ' . Number::format($object->count()) . ' [' . $model . '] at ' . date('H:i:s'));
$object::makeAllSearchable($this->option('chunk'));
$this->info('- Done in ' . round($time->diffInMinutes(), 4) . ' min');
Log::info('Meilisearch', ['model' => $model]);
}
$this->info('Ended at ' . date('H:i:s') . ' after ' . round($start->diffInMinutes(), 3) . ' min');
if (config('scout.queue')) {
$this->newLine();
$this->warn('Meilisearch seeding has been queued.');
$this->warn('Now run `sail artisan queue:work` to finish importing.');
}
}
}
================================================
FILE: app/Console/Commands/SubscriptionEndPaypalFix.php
================================================
<?php
namespace App\Console\Commands;
use App\Jobs\SubscriptionEndJob;
use App\Models\User;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
use Laravel\Cashier\Subscription;
class SubscriptionEndPaypalFix extends Command
{
protected $signature = 'subscriptions:end-paypal-fix
{--dry-run : List affected users without dispatching jobs}';
protected $description = 'One-time fix: dispatch SubscriptionEndJob for users with expired PayPal subs that still have an active pledge';
public function handle(): int
{
$subscriptions = Subscription::with('user')
->where('stripe_price', 'like', 'paypal_%')
->where('stripe_status', 'canceled')
->where('ends_at', '<', now())
->whereHas('user', fn ($q) => $q->whereNotNull('pledge')->where('pledge', '<>', ''))
->whereNotExists(function ($sub) {
$sub->select(DB::raw(1))
->from('subscriptions as s2')
->whereColumn('s2.user_id', 'subscriptions.user_id')
->whereColumn('s2.id', '<>', 'subscriptions.id')
->whereColumn('s2.created_at', '>', 'subscriptions.ends_at');
})
->get();
$count = $subscriptions->count();
$this->info("Found {$count} affected users.");
if ($count === 0) {
return self::SUCCESS;
}
if ($this->option('dry-run')) {
$this->table(
['User ID', 'Name', 'Email', 'Pledge', 'Ended At'],
$subscriptions->map(fn (Subscription $sub) => [
$sub->user->id,
$sub->user->name,
$sub->user->email,
$sub->user->pledge,
$sub->ends_at,
])
);
return self::SUCCESS;
}
foreach ($subscriptions as $subscription) {
/** @var User $user */
$user = $subscription->user;
SubscriptionEndJob::dispatch($user);
$this->line("Dispatched for user {$user->id} ({$user->name})");
}
$this->info("Dispatched {$count} jobs.");
return self::SUCCESS;
}
}
================================================
FILE: app/Console/Commands/Subscriptions/EndFreeTrials.php
================================================
<?php
namespace App\Console\Commands\Subscriptions;
use App\Services\Subscription\FreeTrialEndService;
use App\Traits\HasJobLog;
use Carbon\Carbon;
use Illuminate\Console\Command;
class EndFreeTrials extends Command
{
use HasJobLog;
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'subscriptions:end-free-trials';
/**
* The console command description.
*
* @var string
*/
protected $description = 'End free trials';
public function __construct(protected FreeTrialEndService $service)
{
parent::__construct();
}
/**
* Execute the console command.
*/
public function handle()
{
$count = $this->service->run();
// $this->info(Carbon::now()->subMinute()->startOfMinute() . ' and ' . Carbon::now()->subMinute()->endOfMinute());
$log = 'Ended ' . $count . ' free trials.';
$this->info($log);
$this->log($log . ' ' . implode(',', $this->service->ids()));
return 0;
}
}
================================================
FILE: app/Console/Commands/Subscriptions/EndSubscriptions.php
================================================
<?php
namespace App\Console\Commands\Subscriptions;
use App\Services\Subscription\SubscriptionEndService;
use App\Traits\HasJobLog;
use Illuminate\Console\Command;
class EndSubscriptions extends Command
{
use HasJobLog;
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'subscriptions:end {fake=false}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'End custom subscriptions (sofort) that have expired';
public function __construct(protected SubscriptionEndService $service)
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$fake = $this->argument('fake');
$count = $this->service->run($fake === 'false');
$log = 'Ended ' . $count . ' subscriptions.';
$this->info($log);
$this->log($log . ' ' . implode(', ', $this->service->ids()));
return 0;
}
}
================================================
FILE: app/Console/Commands/Subscriptions/ExpiringCardCommand.php
================================================
<?php
namespace App\Console\Commands\Subscriptions;
use App\Jobs\Emails\Subscriptions\ExpiringCardAlert;
use App\Models\User;
use App\Traits\HasJobLog;
use Carbon\Carbon;
use Illuminate\Console\Command;
class ExpiringCardCommand extends Command
{
use HasJobLog;
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'subscriptions:expiring-card';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Alert subscribers who have an old card set up in their settings';
/** @var int Number of alerts sent */
protected int $count = 0;
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$now = Carbon::now()->endOfMonth();
$log = "Looking for cards expiring on {$now->format('Y-m-d')}";
$this->info($log);
User::where('card_expires_at', $now)
->with('subscriptions')
->chunk(100, function ($users): void {
foreach ($users as $user) {
$this->notify($user);
}
});
$this->info('Alerted ' . $this->count . ' subscribers.');
$log .= '<br />' . 'Alerted ' . $this->count . ' subscribers.';
$this->log($log);
return 0;
}
protected function notify(User $user): void
{
// Check the user has a card
if (! $user->subscribed('kanka')) {
// Has a card but isn't subbed, ignore
$this->warn('Expired card but unsubbed user');
return;
}
// Notify the user about their soon expiring card
ExpiringCardAlert::dispatch($user);
$this->count++;
}
}
================================================
FILE: app/Console/Commands/Subscriptions/PaypalExpiringCommand.php
================================================
<?php
namespace App\Console\Commands\Subscriptions;
use App\Jobs\Emails\Subscriptions\PaypalExpiringAlert;
use App\Models\User;
use App\Traits\HasJobLog;
use Carbon\Carbon;
use Illuminate\Console\Command;
class PaypalExpiringCommand extends Command
{
use HasJobLog;
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'subscriptions:paypal-expiring';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Alert PayPal subscribers whose subscription expires in 14 days';
/** @var int Number of alerts sent */
protected int $count = 0;
public function handle(): int
{
$target = Carbon::now()->addDays(14)->toDateString();
$log = "Looking for PayPal subscriptions expiring on {$target}";
$this->info($log);
User::whereHas('subscriptions', function ($query) use ($target): void {
$query->where('stripe_price', 'like', 'paypal_%')
->whereDate('ends_at', $target);
})
->chunk(100, function ($users): void {
foreach ($users as $user) {
$this->notify($user);
}
});
$this->info('Alerted ' . $this->count . ' subscribers.');
$log .= '<br />' . 'Alerted ' . $this->count . ' subscribers.';
$this->log($log);
return 0;
}
protected function notify(User $user): void
{
if (! $user->subscribed('kanka')) {
return;
}
PaypalExpiringAlert::dispatch($user);
$this->count++;
}
}
================================================
FILE: app/Console/Commands/Subscriptions/SubCleanupCommand.php
================================================
<?php
namespace App\Console\Commands\Subscriptions;
use App\Jobs\SubscriptionEndJob;
use App\Models\User;
use Illuminate\Console\Command;
class SubCleanupCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'subscriptions:cleanup {user}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Cleanup the sub';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$userID = $this->argument('user');
/** @var User $user */
$user = User::findOrFail($userID);
SubscriptionEndJob::dispatch($user);
$this->info('Sub cleaned up for user ' . $user->name . '#' . $user->id . '.');
return 0;
}
}
================================================
FILE: app/Console/Commands/Tests/Mailerlite.php
================================================
<?php
namespace App\Console\Commands\Tests;
use App\Models\User;
use App\Services\NewsletterService;
use Illuminate\Console\Command;
class Mailerlite extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'test:mailerlite';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Test the mailerlite integration';
public function __construct(protected NewsletterService $service)
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$user = User::findorFail(13);
if ($this->service->user($user)->isSubscribed()) {
$this->service->remove();
} else {
$options = [
'releases' => (bool) $user->mail_release,
];
$this->service->update($options);
}
return Command::SUCCESS;
}
}
================================================
FILE: app/Console/Commands/Tests/SendNotification.php
================================================
<?php
namespace App\Console\Commands\Tests;
use App\Models\User;
use App\Notifications\Header;
use Illuminate\Console\Command;
class SendNotification extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'test:notify {user=1} {url=0}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Send a test notification';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$userID = $this->argument('user');
$url = $this->argument('url');
if ($url !== '0') {
$url = config('app.url') . '/pricing';
}
/** @var User $user */
$user = User::findOrFail($userID);
$user->notify(new Header('campaign.application.approved', 'download', 'info', ['link' => $url, 'campaign' => 'Fun & Games']));
$this->info('User ' . $user->name . '#' . $user->id . ' notified.');
return 0;
}
}
================================================
FILE: app/Console/Commands/Tests/SignImageCommand.php
================================================
<?php
namespace App\Console\Commands\Tests;
use App\Facades\Img;
use Illuminate\Console\Command;
use Illuminate\Support\Str;
class SignImageCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*
* @example php artisan img:sign images/tiers/xxx-325.png app 200
* @example php artisan img:sign locations/xxx.png user 200x304
* @example php artisan img:sign images/features/kanka-feature-dashboard.jpg app
*/
protected $signature = 'img:sign {img} {base=user} {size=200}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Sign an image for thumbor';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*/
public function handle()
{
$img = $this->argument('img');
$base = $this->argument('base');
$width = $height = $this->argument('size');
if (Str::contains($width, 'x')) {
$full = $width;
$width = Str::before($full, 'x');
$height = Str::after($full, 'x');
}
$width = (int) $width;
$height = (int) $height;
if (! empty($height)) {
$url = Img::console()->base($base)->crop($width, $height)->url($img);
} else {
$url = Img::console()->base($base)->url($img);
}
$this->info("Base: {$base}");
$this->info("Size: {$width} x {$height}");
$this->info('' . $url);
return 0;
}
}
================================================
FILE: app/Console/Commands/Tests/TestEmail.php
================================================
<?php
namespace App\Console\Commands\Tests;
use App\Events\FeatureCreated;
use App\Jobs\Emails\Purge\FirstWarningJob;
use App\Jobs\Emails\Purge\SecondWarningJob;
use App\Jobs\Emails\SubscriptionCancelEmailJob;
use App\Jobs\Emails\SubscriptionDowngradedEmailJob;
use App\Jobs\Emails\SubscriptionFailedEmailJob;
use App\Jobs\Emails\Subscriptions\ExpiringCardAlert;
use App\Jobs\Emails\Subscriptions\UpcomingYearlyAlert;
use App\Jobs\Emails\Subscriptions\WelcomeSubscriptionEmailJob;
use App\Jobs\Emails\WelcomeEmailJob;
use App\Jobs\Users\NewPassword;
use App\Models\Feature;
use App\Models\Tier;
use App\Models\User;
use Illuminate\Console\Command;
class TestEmail extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'test:email {user} {template=welcome}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Send a test email to a user';
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$userId = $this->argument('user');
$user = User::findOrFail($userId);
$template = $this->argument('template');
if ($template === 'welcome') {
WelcomeEmailJob::dispatch($user, 'en');
} elseif ($template === 'cancelled') {
SubscriptionCancelEmailJob::dispatch($user, null, 'custom text');
} elseif ($template === 'downgrade') {
SubscriptionDowngradedEmailJob::dispatch($user);
} elseif ($template === 'elemental') {
WelcomeSubscriptionEmailJob::dispatch($user, Tier::where('name', 'elemental')->first());
} elseif ($template === 'wyvern') {
WelcomeSubscriptionEmailJob::dispatch($user, Tier::where('name', 'wyvern')->first());
} elseif ($template === 'owlbear') {
WelcomeSubscriptionEmailJob::dispatch($user, Tier::where('name', 'owlbear')->first());
} elseif ($template === 'expiring') {
ExpiringCardAlert::dispatch($user);
} elseif ($template === 'failed') {
SubscriptionFailedEmailJob::dispatch($user);
} elseif ($template === 'upcoming') {
UpcomingYearlyAlert::dispatch($user);
} elseif ($template === 'password') {
NewPassword::dispatch($user);
} elseif ($template === 'first') {
FirstWarningJob::dispatch($user->id);
} elseif ($template === 'second') {
SecondWarningJob::dispatch($user->id);
} elseif ($template === 'feature') {
$feature = Feature::latest()->first();
FeatureCreated::dispatch($feature);
} else {
$this->warn('Unknown template ' . $template);
}
return 0;
}
}
================================================
FILE: app/Console/Commands/Tests/TestWhiteboards.php
================================================
<?php
namespace App\Console\Commands\Tests;
use App\Events\WhiteboardUpdated;
use Illuminate\Console\Command;
class TestWhiteboards extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'test:whiteboards {id}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Send a websocket test event to a given whiteboard ID';
/**
* Execute the console command.
*/
public function handle()
{
$id = (int) $this->argument('id');
broadcast(new WhiteboardUpdated($id, [
'test' => true,
'message' => "Test event sent to whiteboard {$id}",
]));
$this->info("Broadcasted test event to whiteboard.{$id}");
return Command::SUCCESS;
}
}
================================================
FILE: app/Console/Commands/Translations/Missing.php
================================================
<?php
namespace App\Console\Commands\Translations;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
class Missing extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'translations:missing {locale : The target locale to find missing translations for}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Export missing translations for a given locale.';
protected string $prompt;
/**
* Execute the console command.
*/
public function handle(): void
{
$locale = $this->argument('locale');
$this->prompt = '';
$translations = DB::select(
"select * from ltm_translations where locale = 'en' and not exists(select t.* from ltm_translations as t where t.locale = ? and t.group = ltm_translations.group and t.key = ltm_translations.key) order by ltm_translations.group ASC, ltm_translations.key ASC",
[$locale]
);
$groups = [];
foreach ($translations as $translation) {
if (! isset($groups[$translation->group])) {
$groups[$translation->group] = [];
$this->prompt .= "\n#" . $translation->group . "\n";
}
$this->prompt .= ' - ' . $translation->value . "\n";
}
$this->info($this->prompt);
}
}
================================================
FILE: app/Console/Commands/Users/OfferFreeTrial.php
================================================
<?php
namespace App\Console\Commands\Users;
use App\Services\Users\OfferTrialService;
use App\Traits\HasJobLog;
use Illuminate\Console\Command;
class OfferFreeTrial extends Command
{
use HasJobLog;
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'users:trial';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Offer a free trial to some users';
public function __construct(protected OfferTrialService $service)
{
parent::__construct();
}
/**
* Execute the console command.
*/
public function handle()
{
$count = $this->service->run();
$log = 'Offered free trial to ' . $count . ' users.';
$this->info($log);
$this->log($log . ' ' . implode(',', $this->service->ids()));
}
}
================================================
FILE: app/Console/Commands/Users/RegenerateDiscordToken.php
================================================
<?php
namespace App\Console\Commands\Users;
use App\Jobs\Users\UnsyncDiscord;
use App\Models\UserApp;
use App\Services\DiscordService;
use App\Traits\HasJobLog;
use Carbon\Carbon;
use GuzzleHttp\Exception\ClientException;
use Illuminate\Console\Command;
use Illuminate\Support\Str;
class RegenerateDiscordToken extends Command
{
use HasJobLog;
/**
* The name and signature of the console command.
*/
protected $signature = 'users:renew-discord-tokens';
/**
* The console command description.
*/
protected $description = 'Renew a user\'s discord api token.';
public function __construct(protected DiscordService $service)
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$tokens = UserApp::select(['id', 'user_id', 'access_token', 'refresh_token', 'expires_at', 'updated_at', 'settings'])
->with('user')
->where('app', '=', 'discord')
->where('expires_at', '<=', Carbon::now()->toDateString())
->get();
if ($tokens->count() === 0) {
$this->error('No tokens to renew');
return 0;
}
$count = 0;
foreach ($tokens as $token) {
try {
$this->service->app($token)->refresh();
$count++;
} catch (ClientException $e) {
if (Str::contains($e->getResponse()->getBody()->getContents(), 'invalid_grant')) {
UnsyncDiscord::dispatch($token);
}
} catch (\Exception $e) {
report($e);
// Silence errors and ignore
}
}
$log = 'Renewed ' . $count . ' tokens.';
$this->info($log);
$this->log($log . ' ' . implode(',', $this->service->ids()));
return 0;
}
}
================================================
FILE: app/Console/Commands/Users/ResetUserPassword.php
================================================
<?php
namespace App\Console\Commands\Users;
use App\Enums\UserAction;
use App\Models\User;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
class ResetUserPassword extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'users:reset-password {user} {password=auto}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Reset a user password';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$userID = $this->argument('user');
$user = User::find($userID);
if (empty($user)) {
$this->error('Invalid user id ' . $userID);
return 0;
}
$password = $this->argument('password');
if ($password == 'auto') {
$password = Str::random();
}
$hash = Hash::make($password);
$user->update(['password' => $hash]);
$user->log(UserAction::passwordAdminUpdate);
$this->info('User ' . $userID . ' updated to new password ' . $password);
return 0;
}
}
================================================
FILE: app/Console/Commands/Users/SyncUserRoles.php
================================================
<?php
namespace App\Console\Commands\Users;
use App\Models\User;
use App\Services\DiscordService;
use Illuminate\Console\Command;
class SyncUserRoles extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'users:sync-discord {user}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Sync a user\'s discord roles.';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct(protected DiscordService $service)
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$userID = $this->argument('user');
/** @var User $user */
$user = User::find($userID);
if ($user->apps()->app('discord')->count() === 0) {
$this->error('User has no discord sync.');
return 0;
}
$this->service->user($user)
->addRoles();
$logs = $this->service->logs();
foreach ($logs as $log) {
$this->info($log);
}
return 0;
}
}
================================================
FILE: app/Console/Commands/VerifyParentIds.php
================================================
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
class VerifyParentIds extends Command
{
protected $signature = 'parent:verify';
protected $description = 'Report mismatches between child table parent keys and entities.parent_id';
public function handle(): int
{
$models = [
'abilities' => ['key' => 'ability_id', 'type_id' => config('entities.ids.ability')],
'attribute_templates' => ['key' => 'attribute_template_id', 'type_id' => config('entities.ids.attribute_template')],
'calendars' => ['key' => 'calendar_id', 'type_id' => config('entities.ids.calendar')],
'creatures' => ['key' => 'creature_id', 'type_id' => config('entities.ids.creature')],
'events' => ['key' => 'event_id', 'type_id' => config('entities.ids.event')],
'families' => ['key' => 'family_id', 'type_id' => config('entities.ids.family')],
'items' => ['key' => 'item_id', 'type_id' => config('entities.ids.item')],
'journals' => ['key' => 'journal_id', 'type_id' => config('entities.ids.journal')],
'locations' => ['key' => 'location_id', 'type_id' => config('entities.ids.location')],
'maps' => ['key' => 'map_id', 'type_id' => config('entities.ids.map')],
'notes' => ['key' => 'note_id', 'type_id' => config('entities.ids.note')],
'organisations' => ['key' => 'organisation_id', 'type_id' => config('entities.ids.organisation')],
'quests' => ['key' => 'quest_id', 'type_id' => config('entities.ids.quest')],
'races' => ['key' => 'race_id', 'type_id' => config('entities.ids.race')],
'tags' => ['key' => 'tag_id', 'type_id' => config('entities.ids.tag')],
'timelines' => ['key' => 'timeline_id', 'type_id' => config('entities.ids.timeline')],
];
$totalMismatches = 0;
foreach ($models as $table => $config) {
// Find entities where child has a parent but entities.parent_id doesn't match
$mismatches = DB::select("
SELECT e.id AS entity_id, e.name, e.parent_id AS entity_parent_id,
c.{$config['key']} AS child_parent_id,
parent_entity.id AS expected_parent_id
FROM entities e
JOIN {$table} c ON e.entity_id = c.id AND e.type_id = {$config['type_id']}
LEFT JOIN entities parent_entity ON parent_entity.entity_id = c.{$config['key']}
AND parent_entity.type_id = {$config['type_id']}
WHERE (
(c.{$config['key']} IS NOT NULL AND (e.parent_id IS NULL OR e.parent_id != parent_entity.id))
OR (c.{$config['key']} IS NULL AND e.parent_id IS NOT NULL)
)
AND e.deleted_at IS NULL
");
if (count($mismatches) > 0) {
$this->warn("{$table}: " . count($mismatches) . ' mismatches');
foreach ($mismatches as $row) {
$this->line(" Entity #{$row->entity_id} ({$row->name}): entity.parent_id={$row->entity_parent_id}, child.{$config['key']}={$row->child_parent_id}, expected={$row->expected_parent_id}");
}
$totalMismatches += count($mismatches);
} else {
$this->info("{$table}: OK");
}
}
if ($totalMismatches === 0) {
$this->info('All parent IDs are in sync.');
return self::SUCCESS;
}
$this->error("Total mismatches: {$totalMismatches}");
return self::FAILURE;
}
}
================================================
FILE: app/Console/Commands/WordCount.php
================================================
<?php
namespace App\Console\Commands;
use App\Models\CharacterTrait;
use App\Models\Entity;
use App\Models\MapLayer;
use App\Models\MapMarker;
use App\Models\Post;
use App\Models\QuestElement;
use App\Models\TimelineElement;
use App\Models\TimelineEra;
use Carbon\Carbon;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
class WordCount extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'app:word-count';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Count the words in every entity';
/**
* Execute the console command.
*/
public function handle()
{
$start = Carbon::now();
$this->info('Started at ' . date('H:i:s'));
$this->process(Entity::class);
$this->process(Post::class);
$this->process(TimelineElement::class);
$this->process(TimelineEra::class);
$this->process(QuestElement::class);
$this->process(MapMarker::class);
$this->process(MapLayer::class);
$this->process(CharacterTrait::class);
$this->info('Ended at ' . date('H:i:s') . ' after ' . round($start->diffInMinutes(), 3) . ' min');
}
protected function process(string $className, string $field = 'entry')
{
$model = app()->make($className);
$table = $model->getTable();
// DB::statement('UPDATE ' . $model->getTable() . ' SET words = null');
$this->info($className);
$total = $model::whereNull('words')->whereNotNull($field)->count();
$progressBar = $this->output->createProgressBar($total);
$batchSize = 5000;
$processed = 0;
do {
// Process in batches using LIMIT/OFFSET or better yet, use a cursor approach
$updated = DB::table($table)
->whereNotNull($field)
->whereNull('words')
->limit($batchSize)
->update([
'words' => DB::raw("
CASE
WHEN TRIM(REGEXP_REPLACE($field, '<[^>]*>', '')) = '' THEN 0
ELSE (
LENGTH(TRIM(REGEXP_REPLACE($field, '<[^>]*>', ''))) -
LENGTH(REPLACE(TRIM(REGEXP_REPLACE($field, '<[^>]*>', '')), ' ', '')) + 1
)
END
"),
]);
$processed += $updated;
$progressBar->advance($updated);
// Small delay to prevent overwhelming the database
usleep(10000); // 10ms delay
} while ($updated > 0);
$progressBar->finish();
$this->newLine();
$this->info("Processed {$processed} records total");
}
}
================================================
FILE: app/Console/Kernel.php
================================================
<?php
namespace App\Console;
use App\Console\Commands\Campaigns\VisibileEntityCountCommand;
use App\Console\Commands\Cleanup\AnonymiseUserLogs;
use App\Console\Commands\Cleanup\CleanupEntityLogs;
use App\Console\Commands\Cleanup\CleanupTrashed;
use App\Console\Commands\Cleanup\CleanupTrashedCampaigns;
use App\Console\Commands\Cleanup\CleanupUsers;
use App\Console\Commands\Entities\CalendarAdvancer;
use App\Console\Commands\Report\Accounts;
use App\Console\Commands\Report\Churn;
use App\Console\Commands\Report\Onboarding;
use App\Console\Commands\Report\Weekly;
use App\Console\Commands\Subscriptions\EndFreeTrials;
use App\Console\Commands\Subscriptions\EndSubscriptions;
use App\Console\Commands\Subscriptions\ExpiringCardCommand;
use App\Console\Commands\Subscriptions\PaypalExpiringCommand;
use App\Console\Commands\Users\RegenerateDiscordToken;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
];
/**
* Define the application's command schedule.
*/
protected function schedule(Schedule $schedule): void
{
$schedule->command(ExpiringCardCommand::class)->onOneServer()->monthly();
$schedule->command('model:prune')->onOneServer()->daily();
$schedule->command(CalendarAdvancer::class)->onOneServer()->daily();
$schedule->command(AnonymiseUserLogs::class)->onOneServer()->daily();
$schedule->command(EndSubscriptions::class)->onOneServer()->dailyAt('00:05')->sentryMonitor();
$schedule->command(EndFreeTrials::class)->onOneServer()->dailyAt('00:01');
$schedule->command(PaypalExpiringCommand::class)->onOneServer()->dailyAt('06:30');
$schedule->command(RegenerateDiscordToken::class)->onOneServer()->dailyAt('00:15');
$schedule->command(VisibileEntityCountCommand::class)->onOneServer()->dailyAt('01:00');
$schedule->command(CleanupTrashed::class)->onOneServer()->dailyAt('01:15');
$schedule->command('backup:clean')->onOneServer()->dailyAt('01:20');
$schedule->command(CleanupEntityLogs::class)->onOneServer()->dailyAt('01:30');
$schedule->command(CleanupTrashedCampaigns::class)->onOneServer()->dailyAt('01:45');
// $schedule->command(CleanupUsers::class)->onOneServer()->dailyAt('01:50');
$schedule->command('backup:run')->onOneServer()->twiceDaily(2, 14);
$schedule->command(Onboarding::class)->onOneServer()->weekly();
$schedule->command(Churn::class)->onOneServer()->weekly();
// $schedule->command(Accounts::class)->onOneServer()->weekly();
$schedule->command(Weekly::class)->onOneServer()->weekly();
// $schedule->command('backup:monitor')->daily()->at('03:00');
}
/**
* Register the commands for the application.
*/
protected function commands(): void
{
$this->load(__DIR__ . '/Commands');
require base_path('routes/console.php');
}
}
================================================
FILE: app/Datagrids/Actions/BookmarkDatagridActions.php
================================================
<?php
namespace App\Datagrids\Actions;
/**
* Menu links aren't real entities, meaning that they don't get a lot of actions
*/
class BookmarkDatagridActions extends DatagridActions
{
public $bulkPermissions = false;
public $bulkCopyToCampaign = false;
public $bulkTransform = false;
public $bulkPrint = false;
public $bulkTemplate = false;
}
================================================
FILE: app/Datagrids/Actions/DatagridActions.php
================================================
<?php
namespace App\Datagrids\Actions;
/**
* Datagrids
*
* This abstract class controls parameters that are available to the datagrid bulk actions.
* For example, to disable the bulk setting of permissions, set $bulkPermissions to false.
* You can also add custom fields in the bulk delete modal by then testing on
*/
abstract class DatagridActions
{
/** @var bool */
public $bulkPermissions = true;
/** @var bool */
public $bulkCopyToCampaign = true;
/** @var bool */
public $bulkTransform = true;
/** @var bool */
public $bulkPrint = true;
/** @var bool */
public $bulkTemplate = true;
/** @var bool */
public $bulkEditing = true;
/**
* Determine if the datagrid has bulk permissions.
*/
public function hasBulkPermissions(): bool
{
return $this->bulkPermissions;
}
/**
* Determine if the datagrid has bulk permissions.
*/
public function hasBulkEditing(): bool
{
return $this->bulkEditing;
}
/**
* Determine if the datagrid has bulk copy to campaign.
*/
public function hasBulkCopy(): bool
{
return $this->bulkCopyToCampaign;
}
/**
* Determine if the datagrid has bulk transforming entities.
*/
public function hasBulkTransform(): bool
{
return $this->bulkTransform;
}
/**
* Determine if the datagrid has bulk transforming entities.
*/
public function hasBulkTemplate(): bool
{
return $this->bulkTemplate;
}
/**
* Determine if the datagrid has bulk entity printing.
*/
public function hasBulkPrint(): bool
{
return $this->bulkPrint;
}
}
================================================
FILE: app/Datagrids/Actions/DefaultDatagridActions.php
================================================
<?php
namespace App\Datagrids\Actions;
/**
* By default, allow all datagrid actions
*/
class DefaultDatagridActions extends DatagridActions {}
================================================
FILE: app/Datagrids/Actions/DeprecatedDatagridActions.php
================================================
<?php
namespace App\Datagrids\Actions;
/**
* For conversations, we don't want to bulk copy them to other campaigns, nor transform
* them into other entity types.
*/
class DeprecatedDatagridActions extends DatagridActions
{
public $bulkCopyToCampaign = false;
public $bulkTransform = false;
}
================================================
FILE: app/Datagrids/Actions/HistoryActions.php
================================================
<?php
namespace App\Datagrids\Actions;
/**
* Relations heavily restrict options because they aren't entities.
*/
class HistoryActions extends DatagridActions
{
public $bulkPermissions = false;
public $bulkCopyToCampaign = false;
public $bulkPrint = false;
public $bulkTransform = false;
public $bulkTemplate = false;
}
================================================
FILE: app/Datagrids/Actions/NoDatagridActions.php
================================================
<?php
namespace App\Datagrids\Actions;
/**
* Catch all datagrid that disabled everything.
* Used by dice results interface
*/
class NoDatagridActions extends DatagridActions
{
public $bulkCopyToCampaign = false;
public $bulkTransform = false;
public $bulkPermissions = false;
public $bulkPrint = false;
public $bulkEditing = false;
}
================================================
FILE: app/Datagrids/Actions/RelationDatagridActions.php
================================================
<?php
namespace App\Datagrids\Actions;
/**
* Relations heavily restrict options because they aren't entities.
*/
class RelationDatagridActions extends DatagridActions
{
public $bulkPermissions = false;
public $bulkCopyToCampaign = false;
public $bulkPrint = false;
public $bulkTransform = false;
public $bulkTemplate = false;
}
================================================
FILE: app/Datagrids/Bulks/AbilityBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class AbilityBulk extends Bulk
{
protected array $fields = [
'name',
'type',
'parent_id',
'tags',
'private_choice',
'entity_image',
'entity_header',
];
}
================================================
FILE: app/Datagrids/Bulks/AttributeTemplateBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class AttributeTemplateBulk extends Bulk
{
protected array $fields = [
'name',
// 'attribute_template_id',
// 'tags',
'parent_id',
'entity_type_id',
'private_choice',
'enabled_choice',
'entity_image',
'entity_header',
];
protected array $booleans = [
'is_enabled',
];
}
================================================
FILE: app/Datagrids/Bulks/BookmarkBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class BookmarkBulk extends Bulk
{
protected array $fields = [
'name',
'icon',
// 'position',
'private_choice',
'is_active',
];
}
================================================
FILE: app/Datagrids/Bulks/Bulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
/**
* Class Bulk
*
* This abstract class allows each sub object to define which fields are available in the
* bulk edit interface from the main entity type's datagrid.
*/
abstract class Bulk
{
/**
* The fields available for bulk edit, fallsback to a set of defaults
*/
public function fields(): array
{
if (isset($this->fields)) {
return $this->fields;
}
return $this->defaults();
}
/**
* The mapping, used for is_/has_ fields to be able to unset a value. For example a character's is_dead status
*/
public function booleans(): array
{
if (isset($this->booleans)) {
return $this->booleans;
}
return [];
}
/**
* The list of fields that are foreign fields, to be able to properly unset(detach) them if needed
*/
public function foreignRelations(): array
{
if (isset($this->foreignRelations)) {
return $this->foreignRelations;
}
return [];
}
/**
* Attributes that can support basic math
*/
public function maths(): array
{
if (isset($this->maths)) {
return $this->maths;
}
return [];
}
/**
* Default fields that are available in the bulk edit interface if no other are defined.
*/
protected function defaults(): array
{
return [
'name',
'type',
'tags',
'private_choice',
'entity_image',
'entity_header',
];
}
}
================================================
FILE: app/Datagrids/Bulks/CalendarBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class CalendarBulk extends Bulk
{
protected array $fields = [
'name',
'type',
'parent_id',
'tags',
'private_choice',
'format',
'entity_image',
'entity_header',
];
}
================================================
FILE: app/Datagrids/Bulks/CharacterBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class CharacterBulk extends Bulk
{
protected array $fields = [
'name',
'title',
'families',
'entity_locations',
'races',
'type',
'sex',
'status_id',
'age',
'organisations',
'tags',
'private_choice',
'entity_image',
'entity_header',
];
protected array $maths = [
'age',
];
protected array $foreignRelations = [
'races',
'families',
'organisations',
];
}
================================================
FILE: app/Datagrids/Bulks/ConversationBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class ConversationBulk extends Bulk
{
protected array $fields = [
'name',
'tags',
'private_choice',
'entity_image',
'entity_header',
];
}
================================================
FILE: app/Datagrids/Bulks/CreatureBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class CreatureBulk extends Bulk
{
protected array $fields = [
'name',
'type',
'parent_id',
'locations',
'status_id',
'tags',
'private_choice',
'entity_image',
'entity_header',
];
}
================================================
FILE: app/Datagrids/Bulks/DefaultBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
/**
* Class DefaultBulk
*/
class DefaultBulk extends Bulk {}
================================================
FILE: app/Datagrids/Bulks/DiceRollBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class DiceRollBulk extends Bulk
{
protected array $fields = [
'name',
'character_id',
'tags',
'private_choice',
'entity_image',
'entity_header',
];
}
================================================
FILE: app/Datagrids/Bulks/EntityBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class EntityBulk extends Bulk
{
protected array $fields = [
'name',
'type',
'parent_id',
'locations',
'status_id',
'tags',
'private_choice',
'entity_image',
'entity_header',
];
}
================================================
FILE: app/Datagrids/Bulks/EventBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class EventBulk extends Bulk
{
protected array $fields = [
'name',
'type',
'parent_id',
'entity_locations',
'tags',
'private_choice',
'entity_image',
'entity_header',
];
}
================================================
FILE: app/Datagrids/Bulks/FamilyBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class FamilyBulk extends Bulk
{
protected array $fields = [
'name',
'type',
'parent_id',
'location_id',
'status_id',
'tags',
'private_choice',
'entity_image',
'entity_header',
];
}
================================================
FILE: app/Datagrids/Bulks/ItemBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class ItemBulk extends Bulk
{
protected array $fields = [
'name',
'type',
'price',
'size',
'weight',
'parent_id',
'location_id',
'creators',
'status_id',
'tags',
'private_choice',
'entity_image',
'entity_header',
];
}
================================================
FILE: app/Datagrids/Bulks/JournalBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class JournalBulk extends Bulk
{
protected array $fields = [
'name',
'type',
'parent_id',
'author_id',
'date',
'location_id',
'tags',
'private_choice',
'entity_image',
'entity_header',
];
}
================================================
FILE: app/Datagrids/Bulks/LocationBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class LocationBulk extends Bulk
{
protected array $fields = [
'name',
'title',
'type',
'status_id',
'parent_id',
'tags',
'private_choice',
'entity_image',
'entity_header',
];
}
================================================
FILE: app/Datagrids/Bulks/MapBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class MapBulk extends Bulk
{
protected array $fields = [
'name',
'type',
'parent_id',
'location_id',
'tags',
'private_choice',
'entity_image',
'entity_header',
];
}
================================================
FILE: app/Datagrids/Bulks/NoteBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class NoteBulk extends Bulk
{
protected array $fields = [
'name',
'type',
'parent_id',
'tags',
'private_choice',
'entity_image',
'entity_header',
];
}
================================================
FILE: app/Datagrids/Bulks/OrganisationBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class OrganisationBulk extends Bulk
{
protected array $fields = [
'name',
'type',
'locations',
'status_id',
'parent_id',
'tags',
'private_choice',
'entity_image',
'entity_header',
];
}
================================================
FILE: app/Datagrids/Bulks/QuestBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class QuestBulk extends Bulk
{
protected array $fields = [
'name',
'type',
'parent_id',
'instigator_id',
'date',
'locations',
'status_id',
'tags',
'private_choice',
'entity_image',
'entity_header',
];
}
================================================
FILE: app/Datagrids/Bulks/RaceBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class RaceBulk extends Bulk
{
protected array $fields = [
'name',
'type',
'parent_id',
'locations',
'status_id',
'tags',
'private_choice',
'entity_image',
'entity_header',
];
}
================================================
FILE: app/Datagrids/Bulks/RelationBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class RelationBulk extends Bulk
{
protected array $fields = [
'owner_id',
'target_id',
'relation',
'attitude',
'colour_picker',
'pinned_choice',
'visibility_id',
'update_mirrored',
'unmirror',
];
protected array $booleans = [
'colour',
'is_pinned',
];
}
================================================
FILE: app/Datagrids/Bulks/TagBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class TagBulk extends Bulk
{
protected array $fields = [
'name',
'type',
'colour_picker',
'parent_id',
'private_choice',
'auto_applied_choice',
'hide_choice',
'tags',
'entity_image',
'entity_header',
];
protected array $booleans = [
'colour',
'is_auto_applied',
'is_hidden',
];
}
================================================
FILE: app/Datagrids/Bulks/TimelineBulk.php
================================================
<?php
namespace App\Datagrids\Bulks;
class TimelineBulk extends Bulk
{
protected array $fields = [
'name',
'type',
'parent_id',
'tags',
'private_choice',
'entity_image',
'entity_header',
];
}
================================================
FILE: app/Datagrids/Datagrid.php
================================================
<?php
namespace App\Datagrids;
/**
* Datagrids
*
* This abstract class controls parameters that are available to the datagrid bulk actions.
* For example, to disable the bulk setting of permissions, set $bulkPermissions to false.
* You can also add custom fields in the bulk delete modal by then testing on
*/
abstract class Datagrid
{
/** The entities can have permissions applied to them */
public bool $bulkPermissions = true;
/** The entities can be copied to other campaigns */
public bool $bulkCopyToCampaign = true;
/** The entities can be transformed */
public bool $bulkTransform = true;
/** The entities can be printed */
public bool $bulkPrint = true;
/** The entities can have templates applied to them */
public bool $bulkTemplate = true;
/**
* Determine if the datagrid has bulk permissions.
*/
public function hasBulkPermissions(): bool
{
return $this->bulkPermissions;
}
/**
* Determine if the datagrid has bulk copy to campaign.
*/
public function hasBulkCopy(): bool
{
return $this->bulkCopyToCampaign;
}
/**
* Determine if the datagrid has bulk transforming entities.
*/
public function hasBulkTransform(): bool
{
return $this->bulkTransform;
}
/**
* Determine if the datagrid has bulk transforming entities.
*/
public function hasBulkTemplate(): bool
{
return $this->bulkTemplate;
}
/**
* Determine if the datagrid has bulk entity printing.
*/
public function hasBulkPrint(): bool
{
return $this->bulkPrint;
}
}
================================================
FILE: app/Datagrids/Filters/AbilityFilter.php
================================================
<?php
namespace App\Datagrids\Filters;
class AbilityFilter extends DatagridFilter
{
/**
* Filters available for abilities
*/
public function build()
{
$this
->add('name')
->add('type')
->parent(config('entities.ids.ability'))
->isPrivate()
->template()
->archived()
->hasImage()
->hasEntry()
->hasPosts()
->hasEntityFiles()
->hasAttributes()
->tags()
->attributes()
->connections();
}
}
================================================
FILE: app/Datagrids/Filters/AttributeTemplateFilter.php
================================================
<?php
namespace App\Datagrids\Filters;
class AttributeTemplateFilter extends DatagridFilter
{
/**
* Filters available for attribute templates
*/
public function build()
{
$this
->add('name')
->parent(config('entities.ids.attribute_template'))
->add('is_enabled')
->isPrivate()
->template()
->archived()
->hasAttributes()
->tags()
->attributes()
->connections();
}
}
================================================
FILE: app/Datagrids/Filters/CalendarFilter.php
================================================
<?php
namespace App\Datagrids\Filters;
class CalendarFilter extends DatagridFilter
{
/**
* Filters available for calendars
*/
public function build()
{
$this
->add('name')
->add('type')
->parent(config('entities.ids.calendar'))
->isPrivate()
->template()
->archived()
->hasImage()
->hasEntry()
->hasPosts()
->hasEntityFiles()
->hasAttributes()
->tags()
->attributes()
->connections();
}
}
================================================
FILE: app/Datagrids/Filters/CharacterFilter.php
================================================
<?php
namespace App\Datagrids\Filters;
class CharacterFilter extends DatagridFilter
{
/**
* Filters available for characters
*/
public function build()
{
$this
->add('name')
->add('title')
->families()
->locations()
->races()
->organisations()
->add('type')
->add('age')
->add('sex')
->add('pronouns')
->add('status_id')
->isPrivate()
->template()
->archived()
->hasImage()
->hasEntry()
->hasPosts()
->hasEntityFiles()
->hasAttributes()
->tags()
->attributes()
->connections();
}
}
================================================
FILE: app/Datagrids/Filters/ConversationFilter.php
================================================
<?php
namespace App\Datagrids\Filters;
class ConversationFilter extends DatagridFilter
{
/**
* Filters available for conversations
*/
public function build()
{
$this
->add('name')
->add('type')
// ->add([
// 'field' => 'target',
// 'label' => __('conversations.fields.target'),
// 'valueKey' => 'conversations.targets.',
// 'type' => 'select',
// 'placeholder' => __('conversations.placeholders.target'),
// 'data' => __('conversations.targets')
// ])
->add('is_closed')
->isPrivate()
->archived()
->tags();
}
}
================================================
FILE: app/Datagrids/Filters/CreatureFilter.php
================================================
<?php
namespace App\Datagrids\Filters;
class CreatureFilter extends DatagridFilter
{
/**
* Filters available for creatures
*/
public function build()
{
$this
->add('name')
->add('type')
->parent(config('entities.ids.creature'))
->locations()
->add('status_id')
->isPrivate()
->template()
->archived()
->hasImage()
->hasEntry()
->hasPosts()
->hasEntityFiles()
->hasAttributes()
->tags()
->attributes()
->connections();
}
}
================================================
FILE: app/Datagrids/Filters/CustomEntityFilter.php
================================================
<?php
namespace App\Datagrids\Filters;
class CustomEntityFilter extends DatagridFilter
{
/**
* Filters available for races
*/
public function build()
{
$this
->add('name')
->add('type')
->parent($this->entityType->id)
->location()
->isPrivate()
->template()
->archived()
->hasImage()
->hasEntry()
->hasPosts()
->hasEntityFiles()
->hasAttributes()
->tags()
->attributes()
->connections();
}
}
================================================
FILE: app/Datagrids/Filters/DatagridFilter.php
================================================
<?php
namespace App\Datagrids\Filters;
use App\Facades\Module;
use App\Models\Character;
use App\Models\Entity;
use App\Models\Family;
use App\Models\Journal;
use App\Models\Location;
use App\Models\Organisation;
use App\Models\Race;
use App\Models\Tag;
use App\Models\User;
use App\Traits\CampaignAware;
use App\Traits\EntityTypeAware;
use Illuminate\Support\Facades\Auth;
/**
* This abstract class sets up all the stuff needed for rendering filters on entity datagrids.
* Each entity has a class that extends this class and in the constructor sets the fields available.
* Filters that are re-used multiple times or have their own rendering logic are added as functions
* directly on this class.
*/
abstract class DatagridFilter
{
use CampaignAware;
use EntityTypeAware;
/** @var array Filters to be rendered */
protected array $filters = [];
public function build() {}
/**
* Get the filters
*/
public function filters(): array
{
return $this->filters;
}
/**
* @param string|array $name
*/
protected function add($name): self
{
$this->filters[] = $name;
return $this;
}
/**
* Add the location filters
*/
protected function location(): self
{
$name = Module::singular(config('entities.ids.location'));
$placeholder = __('crud.placeholders.location');
if (! empty($name)) {
$placeholder = __('crud.placeholders.fallback', ['module' => $name]);
}
$this->filters[] = [
'field' => 'location_id',
'label' => Module::singular(config('entities.ids.location'), __('entities.location')),
'type' => 'select2',
'route' => route('search-list', [$this->campaign, config('entities.ids.location')]),
'placeholder' => $placeholder,
'model' => Location::class,
'withChildren' => true,
];
return $this;
}
/**
* Add the locations filters
*/
protected function locations(): self
{
$name = Module::plural(config('entities.ids.location'));
$placeholder = __('crud.placeholders.search');
if (! empty($name)) {
$placeholder = __('crud.placeholders.fallback', ['module' => $name]);
}
$this->filters[] = [
'field' => 'locations',
'label' => Module::plural(config('entities.ids.location'), __('entities.locations')),
'type' => 'selectMultiple',
'route' => route('search-list', [$this->campaign, config('entities.ids.location')]),
'placeholder' => $placeholder,
'model' => Location::class,
'multiple' => true,
'withChildren' => true,
];
return $this;
}
/**
* Add the races filters
*/
protected function races(): self
{
$name = Module::plural(config('entities.ids.race'));
$placeholder = __('crud.placeholders.search');
if (! empty($name)) {
$placeholder = __('crud.placeholders.fallback', ['module' => $name]);
}
$this->filters[] = [
'field' => 'races',
'label' => Module::plural(config('entities.ids.race'), __('entities.races')),
'type' => 'selectMultiple',
'route' => route('search-list', [$this->campaign, config('entities.ids.race')]),
'placeholder' => $placeholder,
'model' => Race::class,
'multiple' => true,
'withChildren' => true,
];
return $this;
}
/**
* Add the organisations filters
*/
protected function organisations(): self
{
$name = Module::plural(config('entities.ids.organisation'));
$placeholder = __('crud.placeholders.search');
if (! empty($name)) {
$placeholder = __('crud.placeholders.fallback', ['module' => $name]);
}
$this->filters[] = [
'field' => 'organisations',
'label' => Module::plural(config('entities.ids.organisation'), __('entities.organisations')),
'type' => 'selectMultiple',
'route' => route('search-list', [$this->campaign, config('entities.ids.organisation')]),
'placeholder' => $placeholder,
'model' => Organisation::class,
'multiple' => true,
'withChildren' => true,
];
return $this;
}
/**
* Add the families filters
*/
protected function families(): self
{
$name = Module::plural(config('entities.ids.family'));
$placeholder = __('crud.placeholders.search');
if (! empty($name)) {
$placeholder = __('crud.placeholders.fallback', ['module' => $name]);
}
$this->filters[] = [
'field' => 'families',
'label' => Module::plural(config('entities.ids.family'), __('entities.families')),
'type' => 'selectMultiple',
'route' => route('search-list', [$this->campaign, config('entities.ids.family')]),
'placeholder' => $placeholder,
'model' => Family::class,
'multiple' => true,
'withChildren' => true,
];
return $this;
}
/**
* Add the character filters
*/
protected function character(string $field = 'character_id'): self
{
$name = Module::singular(config('entities.ids.character'));
$placeholder = __('crud.placeholders.search');
if (! empty($name)) {
$placeholder = __('crud.placeholders.fallback', ['module' => $name]);
}
$this->filters[] = [
'field' => $field,
'label' => Module::singular(config('entities.ids.character'), __('entities.character')),
'type' => 'select2',
'route' => route('search-list', [$this->campaign, config('entities.ids.character')]),
'placeholder' => $placeholder,
'model' => Character::class,
];
return $this;
}
/**
* Add the character filters
*/
protected function journal(): self
{
$name = Module::singular(config('entities.ids.journal'));
$placeholder = __('crud.placeholders.journal');
if (! empty($name)) {
$placeholder = __('crud.placeholders.fallback', ['module' => $name]);
}
$this->filters[] = [
'field' => 'journal_id',
'label' => Module::singular(config('entities.ids.journal'), __('entities.journal')),
'type' => 'select2',
'route' => route('search-list', [$this->campaign, config('entities.ids.journal')]),
'placeholder' => $placeholder,
'model' => Journal::class,
];
return $this;
}
/**
* Add the tags filters
*/
protected function tags(): self
{
$name = Module::singular(config('entities.ids.tag'));
$placeholder = __('crud.placeholders.tag');
if (! empty($name)) {
$placeholder = __('crud.placeholders.fallback', ['module' => $name]);
}
$this->filters[] = [
'field' => 'tags',
'label' => Module::plural(config('entities.ids.tag'), __('entities.tags')),
'type' => 'tag',
'route' => route('search-list', [$this->campaign, config('entities.ids.tag')]),
'placeholder' => $placeholder,
'model' => Tag::class,
];
return $this;
}
/**
* Add the is_private
*/
protected function isPrivate(): self
{
// Add the is_private filter only for admins.
if (Auth::check() && Auth::user()->isAdmin()) {
$this->filters[] = 'is_private';
}
return $this;
}
/**
* Add the entity has an image
*/
protected function hasImage(): self
{
$this->filters[] = 'has_image';
return $this;
}
/**
* Add the entity parent filter as a select2 for the given entity type
*/
protected function parent(int $entityTypeId): self
{
$this->filters[] = [
'field' => 'parent_id',
'label' => __('crud.fields.parent'),
'type' => 'select2',
'route' => route('search-list', [$this->campaign, $entityTypeId, 'entity' => true]),
'placeholder' => __('crud.placeholders.search'),
'model' => Entity::class,
];
return $this;
}
/**
* Add the entity has posts
*/
protected function hasPosts(): self
{
$this->filters[] = 'has_posts';
return $this;
}
/**
* Add the entity has entry
*/
protected function hasEntry(): self
{
$this->filters[] = 'has_entry';
return $this;
}
/**
* Add the entity has attributes
*/
protected function hasAttributes(): self
{
$this->filters[] = 'has_attributes';
return $this;
}
/**
* Add the has image
*/
protected function hasEntityFiles(): self
{
$this->filters[] = 'has_entity_files';
return $this;
}
/**
* Add the (real) date filter
*/
protected function date(): self
{
$this->filters[] = 'date';
return $this;
}
/**
* Add the attributes selector
*/
protected function attributes(): self
{
$this->filters[] = 'attributes';
return $this;
}
/**
* Add the connection selector
*/
protected function connections(): self
{
$this->filters[] = 'connections';
return $this;
}
/**
* Add the created by selector
*/
protected function createdBy(): self
{
$this->filters[] = [
'field' => 'created_by',
'label' => __('crud.fields.created_by'),
'type' => 'select2',
'route' => route('find.members', [$this->campaign]),
'placeholder' => __('crud.placeholders.user'),
'model' => User::class,
];
return $this;
}
/**
* Add the updated by selector
*/
protected function updatedBy(): self
{
$this->filters[] = [
'field' => 'updated_by',
'label' => __('crud.fields.updated_by'),
'type' => 'select2',
'route' => route('find.members', [$this->campaign]),
'placeholder' => __('crud.placeholders.user'),
'model' => User::class,
];
return $this;
}
/**
* Add the date range filter
*/
protected function dateRange(): self
{
$this->filters[] = 'date_range';
return $this;
}
/**
* Add the is template filter
*/
protected function template(): self
{
$this->filters[] = 'template';
return $this;
}
/**
* Add the is archived filter
*/
protected function archived(): self
{
$this->filters[] = 'archived';
return $this;
}
}
================================================
FILE: app/Datagrids/Filters/DiceRollFilter.php
================================================
<?php
namespace App\Datagrids\Filters;
class DiceRollFilter extends DatagridFilter
{
/**
* Filters available for dice rolls
*/
public function build()
{
$this
->add('name')
->character()
->isPrivate()
->archived()
->tags();
}
}
================================================
FILE: app/Datagrids/Filters/EventFilter.php
================================================
<?php
namespace App\Data
Showing preview only (333K chars total). Download the full file or copy to clipboard to get everything.
gitextract_tqacef9c/ ├── .claude/ │ ├── commands/ │ │ └── translate.md │ └── skills/ │ ├── livewire-development/ │ │ └── SKILL.md │ ├── pest-testing/ │ │ └── SKILL.md │ └── tailwindcss-development/ │ └── SKILL.md ├── .dockerignore ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ └── workflows/ │ ├── claude.yml │ ├── lint.yml │ └── phpstan.yml ├── .gitignore ├── .jshintrc ├── .mariadb/ │ ├── 10-create-logs-database.sh │ └── conf.d/ │ └── kanka.cnf ├── .mcp.json ├── .nginx/ │ └── thumbor.conf ├── .phpactor.json ├── CLAUDE.md ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── app/ │ ├── Auth/ │ │ └── PassportTokenGuard.php │ ├── Console/ │ │ ├── Commands/ │ │ │ ├── Campaigns/ │ │ │ │ ├── CleanupCommand.php │ │ │ │ ├── DeleteCommand.php │ │ │ │ ├── DummyEntities.php │ │ │ │ ├── ExportCommand.php │ │ │ │ ├── ImportCommand.php │ │ │ │ ├── PermissionsSyncCommand.php │ │ │ │ ├── PopulateCommand.php │ │ │ │ └── VisibileEntityCountCommand.php │ │ │ ├── Cleanup/ │ │ │ │ ├── AnonymiseUserLogs.php │ │ │ │ ├── CleanupEntityLogs.php │ │ │ │ ├── CleanupImages.php │ │ │ │ ├── CleanupTrashed.php │ │ │ │ ├── CleanupTrashedCampaigns.php │ │ │ │ └── CleanupUsers.php │ │ │ ├── Entities/ │ │ │ │ ├── CalendarAdvancer.php │ │ │ │ ├── ChildlessEntities.php │ │ │ │ └── MapChunk.php │ │ │ ├── InstallCommand.php │ │ │ ├── Metrics/ │ │ │ │ └── MetricsGa4.php │ │ │ ├── Migrations/ │ │ │ │ ├── BookmarkEntityType.php │ │ │ │ ├── Cdn.php │ │ │ │ ├── MigrateEntityStatuses.php │ │ │ │ ├── MigrateStatusFilters.php │ │ │ │ ├── MigrateSubMentions.php │ │ │ │ └── NewsletterSubCommand.php │ │ │ ├── Report/ │ │ │ │ ├── Accounts.php │ │ │ │ ├── Churn.php │ │ │ │ ├── Onboarding.php │ │ │ │ └── Weekly.php │ │ │ ├── SetupMeilisearch.php │ │ │ ├── SubscriptionEndPaypalFix.php │ │ │ ├── Subscriptions/ │ │ │ │ ├── EndFreeTrials.php │ │ │ │ ├── EndSubscriptions.php │ │ │ │ ├── ExpiringCardCommand.php │ │ │ │ ├── PaypalExpiringCommand.php │ │ │ │ └── SubCleanupCommand.php │ │ │ ├── Tests/ │ │ │ │ ├── Mailerlite.php │ │ │ │ ├── SendNotification.php │ │ │ │ ├── SignImageCommand.php │ │ │ │ ├── TestEmail.php │ │ │ │ └── TestWhiteboards.php │ │ │ ├── Translations/ │ │ │ │ └── Missing.php │ │ │ ├── Users/ │ │ │ │ ├── OfferFreeTrial.php │ │ │ │ ├── RegenerateDiscordToken.php │ │ │ │ ├── ResetUserPassword.php │ │ │ │ └── SyncUserRoles.php │ │ │ ├── VerifyParentIds.php │ │ │ └── WordCount.php │ │ └── Kernel.php │ ├── Datagrids/ │ │ ├── Actions/ │ │ │ ├── BookmarkDatagridActions.php │ │ │ ├── DatagridActions.php │ │ │ ├── DefaultDatagridActions.php │ │ │ ├── DeprecatedDatagridActions.php │ │ │ ├── HistoryActions.php │ │ │ ├── NoDatagridActions.php │ │ │ └── RelationDatagridActions.php │ │ ├── Bulks/ │ │ │ ├── AbilityBulk.php │ │ │ ├── AttributeTemplateBulk.php │ │ │ ├── BookmarkBulk.php │ │ │ ├── Bulk.php │ │ │ ├── CalendarBulk.php │ │ │ ├── CharacterBulk.php │ │ │ ├── ConversationBulk.php │ │ │ ├── CreatureBulk.php │ │ │ ├── DefaultBulk.php │ │ │ ├── DiceRollBulk.php │ │ │ ├── EntityBulk.php │ │ │ ├── EventBulk.php │ │ │ ├── FamilyBulk.php │ │ │ ├── ItemBulk.php │ │ │ ├── JournalBulk.php │ │ │ ├── LocationBulk.php │ │ │ ├── MapBulk.php │ │ │ ├── NoteBulk.php │ │ │ ├── OrganisationBulk.php │ │ │ ├── QuestBulk.php │ │ │ ├── RaceBulk.php │ │ │ ├── RelationBulk.php │ │ │ ├── TagBulk.php │ │ │ └── TimelineBulk.php │ │ ├── Datagrid.php │ │ ├── Filters/ │ │ │ ├── AbilityFilter.php │ │ │ ├── AttributeTemplateFilter.php │ │ │ ├── CalendarFilter.php │ │ │ ├── CharacterFilter.php │ │ │ ├── ConversationFilter.php │ │ │ ├── CreatureFilter.php │ │ │ ├── CustomEntityFilter.php │ │ │ ├── DatagridFilter.php │ │ │ ├── DiceRollFilter.php │ │ │ ├── EventFilter.php │ │ │ ├── FamilyFilter.php │ │ │ ├── HistoryFilter.php │ │ │ ├── ItemFilter.php │ │ │ ├── JournalFilter.php │ │ │ ├── LocationFilter.php │ │ │ ├── MapFilter.php │ │ │ ├── NoteFilter.php │ │ │ ├── OrganisationFilter.php │ │ │ ├── QuestFilter.php │ │ │ ├── RaceFilter.php │ │ │ ├── RelationFilter.php │ │ │ ├── TagFilter.php │ │ │ ├── TimelineFilter.php │ │ │ └── WhiteboardFilter.php │ │ └── Sorters/ │ │ ├── DatagridSorter.php │ │ └── QuestElementSorter.php │ ├── Definitions/ │ │ ├── CustomCssDefinitions.php │ │ └── CustomDefinitions.php │ ├── Enums/ │ │ ├── AppReleaseCategory.php │ │ ├── ApplicationStatus.php │ │ ├── AttributeType.php │ │ ├── CampaignExportStatus.php │ │ ├── CampaignFilterType.php │ │ ├── CampaignFlags.php │ │ ├── CampaignImportStatus.php │ │ ├── CampaignVisibility.php │ │ ├── CharacterStatus.php │ │ ├── ConversationTarget.php │ │ ├── Descendants.php │ │ ├── EntityAssetType.php │ │ ├── EntityEventTypes.php │ │ ├── FeatureStatus.php │ │ ├── FilterOption.php │ │ ├── MapMarkerShape.php │ │ ├── OrganisationMemberPin.php │ │ ├── OrganisationMemberStatus.php │ │ ├── Permission.php │ │ ├── PricingPeriod.php │ │ ├── QuestStatus.php │ │ ├── ReferralEventType.php │ │ ├── SpotlightContentStatus.php │ │ ├── SpotlightStatus.php │ │ ├── Tier.php │ │ ├── UserAction.php │ │ ├── UserFlags.php │ │ ├── Visibility.php │ │ ├── WebhookAction.php │ │ └── Widget.php │ ├── Events/ │ │ ├── AdminInviteCreated.php │ │ ├── Campaigns/ │ │ │ ├── Applications/ │ │ │ │ ├── Accepted.php │ │ │ │ └── Rejected.php │ │ │ ├── Dashboards/ │ │ │ │ ├── DashboardCreated.php │ │ │ │ ├── DashboardDeleted.php │ │ │ │ └── DashboardUpdated.php │ │ │ ├── Deleted.php │ │ │ ├── EntityTypes/ │ │ │ │ ├── EntityTypeCreated.php │ │ │ │ ├── EntityTypeDeleted.php │ │ │ │ ├── EntityTypeToggled.php │ │ │ │ └── EntityTypeUpdated.php │ │ │ ├── Exports/ │ │ │ │ └── ExportCreated.php │ │ │ ├── Followers/ │ │ │ │ ├── FollowerCreated.php │ │ │ │ └── FollowerRemoved.php │ │ │ ├── Invites/ │ │ │ │ ├── InviteCreated.php │ │ │ │ └── InviteDeleted.php │ │ │ ├── Members/ │ │ │ │ ├── RoleUserAdded.php │ │ │ │ ├── RoleUserRemoved.php │ │ │ │ ├── Switched.php │ │ │ │ ├── UserJoined.php │ │ │ │ └── UserLeft.php │ │ │ ├── Plugins/ │ │ │ │ ├── PluginDeleted.php │ │ │ │ ├── PluginImported.php │ │ │ │ └── PluginUpdated.php │ │ │ ├── Roles/ │ │ │ │ ├── RoleCreated.php │ │ │ │ ├── RoleDeleted.php │ │ │ │ └── RoleUpdated.php │ │ │ ├── Saved.php │ │ │ ├── SettingsSaved.php │ │ │ ├── Sidebar/ │ │ │ │ ├── SidebarReset.php │ │ │ │ └── SidebarSaved.php │ │ │ ├── Styles/ │ │ │ │ ├── StyleCreated.php │ │ │ │ ├── StyleDeleted.php │ │ │ │ └── StyleUpdated.php │ │ │ ├── Thumbnails/ │ │ │ │ ├── ThumbnailCreated.php │ │ │ │ ├── ThumbnailDeleted.php │ │ │ │ └── ThumbnailsDeleted.php │ │ │ ├── Updated.php │ │ │ └── Webhooks/ │ │ │ ├── WebhookCreated.php │ │ │ ├── WebhookDeleted.php │ │ │ ├── WebhookTested.php │ │ │ └── WebhookUpdated.php │ │ ├── Entities/ │ │ │ └── EntityRestored.php │ │ ├── FeatureCreated.php │ │ ├── Posts/ │ │ │ ├── PostCreated.php │ │ │ ├── PostDeleted.php │ │ │ ├── PostRestored.php │ │ │ └── PostUpdated.php │ │ ├── SpotlightSubmitted.php │ │ ├── Subscriptions/ │ │ │ ├── AutoRemove.php │ │ │ ├── Boost.php │ │ │ ├── Disable.php │ │ │ ├── Premium.php │ │ │ ├── SuperBoost.php │ │ │ └── Upgrade.php │ │ ├── Users/ │ │ │ └── EmailChanged.php │ │ ├── WhiteboardUpdated.php │ │ └── Whiteboards/ │ │ └── Updated.php │ ├── Exceptions/ │ │ ├── Campaign/ │ │ │ ├── AlreadyBoostedException.php │ │ │ ├── ExhaustedBoostsException.php │ │ │ ├── ExhaustedSuperboostsException.php │ │ │ └── ImportException.php │ │ ├── Handler.php │ │ ├── OpenAiException.php │ │ ├── RequireLoginException.php │ │ └── TranslatableException.php │ ├── Facades/ │ │ ├── AdCache.php │ │ ├── ApiLog.php │ │ ├── Attributes.php │ │ ├── Avatar.php │ │ ├── BookmarkCache.php │ │ ├── Breadcrumb.php │ │ ├── CampaignCache.php │ │ ├── CampaignLocalization.php │ │ ├── CharacterCache.php │ │ ├── Dashboard.php │ │ ├── DataLayer.php │ │ ├── Datagrid.php │ │ ├── Domain.php │ │ ├── EntityAssetCache.php │ │ ├── EntityCache.php │ │ ├── EntityLogger.php │ │ ├── EntityPermission.php │ │ ├── FormCopy.php │ │ ├── Identity.php │ │ ├── Images.php │ │ ├── Img.php │ │ ├── ImportIdMapper.php │ │ ├── Limit.php │ │ ├── MapMarkerCache.php │ │ ├── MarketplaceCache.php │ │ ├── Mentions.php │ │ ├── Module.php │ │ ├── Permissions.php │ │ ├── QuestCache.php │ │ ├── ReleaseCache.php │ │ ├── RolePermission.php │ │ ├── SingleUserCache.php │ │ ├── TimelineElementCache.php │ │ ├── UserCache.php │ │ └── UserPermission.php │ ├── Http/ │ │ ├── Controllers/ │ │ │ ├── Abilities/ │ │ │ │ ├── AbilityController.php │ │ │ │ └── EntityController.php │ │ │ ├── Account/ │ │ │ │ ├── Billing/ │ │ │ │ │ └── InformationController.php │ │ │ │ ├── DeleteController.php │ │ │ │ ├── EmailController.php │ │ │ │ ├── PasswordController.php │ │ │ │ └── SocialController.php │ │ │ ├── Api/ │ │ │ │ ├── Public/ │ │ │ │ │ ├── CampaignController.php │ │ │ │ │ ├── HallOfFameController.php │ │ │ │ │ ├── KbController.php │ │ │ │ │ ├── ShowcaseController.php │ │ │ │ │ └── VoteController.php │ │ │ │ └── v1/ │ │ │ │ ├── AbilityApiController.php │ │ │ │ ├── ApiController.php │ │ │ │ ├── ApplicationApiController.php │ │ │ │ ├── AttributeTemplateApiController.php │ │ │ │ ├── BookmarkApiController.php │ │ │ │ ├── CalendarApiController.php │ │ │ │ ├── CalendarEventApiController.php │ │ │ │ ├── CalendarWeatherApiController.php │ │ │ │ ├── Calendars/ │ │ │ │ │ └── AdvancerApiController.php │ │ │ │ ├── CampaignApiController.php │ │ │ │ ├── CampaignDashboardWidgetApiController.php │ │ │ │ ├── CampaignImageApiController.php │ │ │ │ ├── CampaignRoleApiController.php │ │ │ │ ├── CampaignStyleApiController.php │ │ │ │ ├── Campaigns/ │ │ │ │ │ ├── CategoryStatusController.php │ │ │ │ │ ├── EntityTypeApiController.php │ │ │ │ │ └── UserApiController.php │ │ │ │ ├── CharacterApiController.php │ │ │ │ ├── ConversationApiController.php │ │ │ │ ├── ConversationMessageApiController.php │ │ │ │ ├── ConversationParticipantApiController.php │ │ │ │ ├── CreatureApiController.php │ │ │ │ ├── DefaultThumbnailApiController.php │ │ │ │ ├── DiceRollApiController.php │ │ │ │ ├── Entities/ │ │ │ │ │ ├── Attributes/ │ │ │ │ │ │ ├── PatchController.php │ │ │ │ │ │ └── PutController.php │ │ │ │ │ └── ReminderApiController.php │ │ │ │ ├── EntityAbilityApiController.php │ │ │ │ ├── EntityApiController.php │ │ │ │ ├── EntityArchiveApiController.php │ │ │ │ ├── EntityAssetApiController.php │ │ │ │ ├── EntityAttributeApiController.php │ │ │ │ ├── EntityImageApiController.php │ │ │ │ ├── EntityInventoryApiController.php │ │ │ │ ├── EntityMentionApiController.php │ │ │ │ ├── EntityMoveApiController.php │ │ │ │ ├── EntityPermissionApiController.php │ │ │ │ ├── EntityRecoveryApiController.php │ │ │ │ ├── EntityRelationApiController.php │ │ │ │ ├── EntityTagApiController.php │ │ │ │ ├── EntityTemplateApiController.php │ │ │ │ ├── EntityTransformApiController.php │ │ │ │ ├── EntityTypeApiController.php │ │ │ │ ├── EventApiController.php │ │ │ │ ├── FamilyApiController.php │ │ │ │ ├── FamilyTreeApiController.php │ │ │ │ ├── FilterApiController.php │ │ │ │ ├── FullTextSearchApiController.php │ │ │ │ ├── HealthController.php │ │ │ │ ├── ItemApiController.php │ │ │ │ ├── JournalApiController.php │ │ │ │ ├── LocationApiController.php │ │ │ │ ├── MapApiController.php │ │ │ │ ├── MapGroupApiController.php │ │ │ │ ├── MapLayerApiController.php │ │ │ │ ├── MapMarkerApiController.php │ │ │ │ ├── MiscApiController.php │ │ │ │ ├── NoteApiController.php │ │ │ │ ├── OrganisationApiController.php │ │ │ │ ├── OrganisationMemberApiController.php │ │ │ │ ├── PostApiController.php │ │ │ │ ├── PostLayoutApiController.php │ │ │ │ ├── PostRecoveryApiController.php │ │ │ │ ├── ProfileApiController.php │ │ │ │ ├── QuestApiController.php │ │ │ │ ├── QuestElementApiController.php │ │ │ │ ├── RaceApiController.php │ │ │ │ ├── RecentEntityApiController.php │ │ │ │ ├── RelationApiController.php │ │ │ │ ├── ReminderApiController.php │ │ │ │ ├── SearchApiController.php │ │ │ │ ├── TagApiController.php │ │ │ │ ├── TimelineApiController.php │ │ │ │ ├── TimelineElementApiController.php │ │ │ │ ├── TimelineEraApiController.php │ │ │ │ └── VisibilityController.php │ │ │ ├── Attributes/ │ │ │ │ └── ApiController.php │ │ │ ├── Auth/ │ │ │ │ ├── AuthController.php │ │ │ │ ├── ConfirmPasswordController.php │ │ │ │ ├── ForgotPasswordController.php │ │ │ │ ├── LoginController.php │ │ │ │ ├── RegisterController.php │ │ │ │ ├── ResetPasswordController.php │ │ │ │ └── VerificationController.php │ │ │ ├── Billing/ │ │ │ │ ├── HistoryController.php │ │ │ │ └── PaymentMethodController.php │ │ │ ├── Bookmarks/ │ │ │ │ ├── RandomController.php │ │ │ │ └── ReorderController.php │ │ │ ├── Bragi/ │ │ │ │ └── BragiController.php │ │ │ ├── BulkController.php │ │ │ ├── Bulks/ │ │ │ │ ├── BatchController.php │ │ │ │ ├── CopyController.php │ │ │ │ ├── DeleteController.php │ │ │ │ ├── DeleteRelationController.php │ │ │ │ ├── PermissionController.php │ │ │ │ ├── PrintController.php │ │ │ │ ├── TemplateController.php │ │ │ │ └── TransformController.php │ │ │ ├── Calendar/ │ │ │ │ └── CalendarWeatherController.php │ │ │ ├── Calendars/ │ │ │ │ ├── Bulks/ │ │ │ │ │ └── EntityEventController.php │ │ │ │ └── EventController.php │ │ │ ├── Campaign/ │ │ │ │ ├── AchievementController.php │ │ │ │ ├── ApplicationController.php │ │ │ │ ├── ApplicationDashboardController.php │ │ │ │ ├── ApplicationSetupController.php │ │ │ │ ├── ApplyController.php │ │ │ │ ├── CreateController.php │ │ │ │ ├── CssController.php │ │ │ │ ├── DashboardController.php │ │ │ │ ├── DashboardHeaderController.php │ │ │ │ ├── DashboardWidgetController.php │ │ │ │ ├── DefaultImageController.php │ │ │ │ ├── DefaultsController.php │ │ │ │ ├── DeleteController.php │ │ │ │ ├── EntityTypeController.php │ │ │ │ ├── ExportController.php │ │ │ │ ├── FollowController.php │ │ │ │ ├── ImageController.php │ │ │ │ ├── ImportController.php │ │ │ │ ├── InviteController.php │ │ │ │ ├── LeaveController.php │ │ │ │ ├── LogController.php │ │ │ │ ├── MemberController.php │ │ │ │ ├── Members/ │ │ │ │ │ └── RoleController.php │ │ │ │ ├── ModuleController.php │ │ │ │ ├── PluginController.php │ │ │ │ ├── Plugins/ │ │ │ │ │ ├── BulkController.php │ │ │ │ │ ├── CssController.php │ │ │ │ │ ├── ImportController.php │ │ │ │ │ ├── ToggleController.php │ │ │ │ │ └── UpdateController.php │ │ │ │ ├── RecoveryController.php │ │ │ │ ├── RoleController.php │ │ │ │ ├── RoleUserController.php │ │ │ │ ├── ShareController.php │ │ │ │ ├── SidebarController.php │ │ │ │ ├── StatController.php │ │ │ │ ├── StyleController.php │ │ │ │ ├── ThemeBuilderController.php │ │ │ │ ├── UserController.php │ │ │ │ ├── VanityController.php │ │ │ │ ├── VisibilityController.php │ │ │ │ ├── WebController.php │ │ │ │ └── WebhookController.php │ │ │ ├── CampaignBoostController.php │ │ │ ├── Characters/ │ │ │ │ ├── Families/ │ │ │ │ │ └── ManagementController.php │ │ │ │ ├── MemberController.php │ │ │ │ ├── MembershipController.php │ │ │ │ └── Races/ │ │ │ │ └── ManagementController.php │ │ │ ├── ConfirmController.php │ │ │ ├── Controller.php │ │ │ ├── ConversationMessageController.php │ │ │ ├── ConversationParticipantController.php │ │ │ ├── CookieConsentController.php │ │ │ ├── Creatures/ │ │ │ │ └── CreatureController.php │ │ │ ├── Crud/ │ │ │ │ ├── AbilityController.php │ │ │ │ ├── AttributeTemplateController.php │ │ │ │ ├── BookmarkController.php │ │ │ │ ├── CalendarController.php │ │ │ │ ├── CampaignController.php │ │ │ │ ├── CharacterController.php │ │ │ │ ├── ConversationController.php │ │ │ │ ├── CreatureController.php │ │ │ │ ├── DiceRollController.php │ │ │ │ ├── EventController.php │ │ │ │ ├── FamilyController.php │ │ │ │ ├── ItemController.php │ │ │ │ ├── JournalController.php │ │ │ │ ├── LocationController.php │ │ │ │ ├── MapController.php │ │ │ │ ├── NoteController.php │ │ │ │ ├── OrganisationController.php │ │ │ │ ├── QuestController.php │ │ │ │ ├── RaceController.php │ │ │ │ ├── TagController.php │ │ │ │ └── TimelineController.php │ │ │ ├── CrudController.php │ │ │ ├── DashboardController.php │ │ │ ├── Dashboards/ │ │ │ │ ├── GettingStartedController.php │ │ │ │ └── SetupController.php │ │ │ ├── Datagrid2/ │ │ │ │ └── BulkControllerTrait.php │ │ │ ├── Datagrids/ │ │ │ │ └── SubscriptionController.php │ │ │ ├── DiceRolls/ │ │ │ │ └── ResultsController.php │ │ │ ├── EditingController.php │ │ │ ├── Entities/ │ │ │ │ ├── Apis/ │ │ │ │ │ └── DocumentController.php │ │ │ │ ├── ChildrenController.php │ │ │ │ ├── CreateController.php │ │ │ │ ├── DeleteController.php │ │ │ │ ├── EditController.php │ │ │ │ ├── IndexController.php │ │ │ │ └── ListingPreferenceController.php │ │ │ ├── Entity/ │ │ │ │ ├── Abilities/ │ │ │ │ │ ├── ApiController.php │ │ │ │ │ ├── ChargeController.php │ │ │ │ │ ├── ImportController.php │ │ │ │ │ └── ReorderController.php │ │ │ │ ├── AbilityController.php │ │ │ │ ├── ArchiveController.php │ │ │ │ ├── AssetController.php │ │ │ │ ├── AttributeController.php │ │ │ │ ├── AttributeTemplateController.php │ │ │ │ ├── Attributes/ │ │ │ │ │ ├── ApiController.php │ │ │ │ │ ├── LiveApiController.php │ │ │ │ │ └── LiveController.php │ │ │ │ ├── Connections/ │ │ │ │ │ ├── MapController.php │ │ │ │ │ └── TableController.php │ │ │ │ ├── CopyInventoryController.php │ │ │ │ ├── EntryController.php │ │ │ │ ├── ExportController.php │ │ │ │ ├── GenerateInventoryController.php │ │ │ │ ├── ImageController.php │ │ │ │ ├── Inventory/ │ │ │ │ │ └── DetailController.php │ │ │ │ ├── InventoryController.php │ │ │ │ ├── InventorySectionController.php │ │ │ │ ├── LogController.php │ │ │ │ ├── MentionController.php │ │ │ │ ├── MoveController.php │ │ │ │ ├── PermissionController.php │ │ │ │ ├── PostController.php │ │ │ │ ├── Posts/ │ │ │ │ │ ├── LayoutController.php │ │ │ │ │ ├── LogController.php │ │ │ │ │ ├── MoveController.php │ │ │ │ │ ├── TemplateController.php │ │ │ │ │ └── VisibilityController.php │ │ │ │ ├── PreviewController.php │ │ │ │ ├── PrivacyController.php │ │ │ │ ├── ProfileController.php │ │ │ │ ├── RelationController.php │ │ │ │ ├── ReminderController.php │ │ │ │ ├── ShareController.php │ │ │ │ ├── ShowController.php │ │ │ │ ├── StoryController.php │ │ │ │ ├── TagController.php │ │ │ │ ├── TemplateController.php │ │ │ │ ├── TooltipController.php │ │ │ │ └── TransformController.php │ │ │ ├── EntityCreatorController.php │ │ │ ├── Events/ │ │ │ │ └── EventController.php │ │ │ ├── Facebook/ │ │ │ │ └── DeletionController.php │ │ │ ├── Families/ │ │ │ │ ├── FamilyController.php │ │ │ │ ├── MemberController.php │ │ │ │ ├── TreeController.php │ │ │ │ └── Trees/ │ │ │ │ └── ApiController.php │ │ │ ├── Filters/ │ │ │ │ ├── FormController.php │ │ │ │ └── SaveController.php │ │ │ ├── Front/ │ │ │ │ └── HelperController.php │ │ │ ├── FrontendPrepareController.php │ │ │ ├── Gallery/ │ │ │ │ ├── BrowseController.php │ │ │ │ ├── CreateController.php │ │ │ │ ├── DeleteController.php │ │ │ │ ├── ImageController.php │ │ │ │ ├── SearchController.php │ │ │ │ ├── SetupController.php │ │ │ │ ├── ShowController.php │ │ │ │ ├── TiptapController.php │ │ │ │ ├── UpdateController.php │ │ │ │ ├── UploadController.php │ │ │ │ └── VisibilityController.php │ │ │ ├── GalleryController.php │ │ │ ├── HealthController.php │ │ │ ├── HistoryController.php │ │ │ ├── HomeController.php │ │ │ ├── InvitationController.php │ │ │ ├── Items/ │ │ │ │ ├── EntityController.php │ │ │ │ └── ItemController.php │ │ │ ├── Journals/ │ │ │ │ └── JournalController.php │ │ │ ├── Layout/ │ │ │ │ └── NavigationController.php │ │ │ ├── Locations/ │ │ │ │ ├── CharacterController.php │ │ │ │ ├── EventController.php │ │ │ │ ├── LocationController.php │ │ │ │ └── QuestController.php │ │ │ ├── Maps/ │ │ │ │ ├── Bulks/ │ │ │ │ │ ├── GroupController.php │ │ │ │ │ ├── LayerController.php │ │ │ │ │ └── MarkerController.php │ │ │ │ ├── ExploreController.php │ │ │ │ ├── GroupController.php │ │ │ │ ├── LayerController.php │ │ │ │ ├── Layers/ │ │ │ │ │ └── MigrateController.php │ │ │ │ ├── MapController.php │ │ │ │ ├── MarkerController.php │ │ │ │ ├── Markers/ │ │ │ │ │ ├── DetailController.php │ │ │ │ │ └── MoveController.php │ │ │ │ ├── PreviewController.php │ │ │ │ └── Reorders/ │ │ │ │ ├── GroupController.php │ │ │ │ └── LayerController.php │ │ │ ├── Notes/ │ │ │ │ └── NoteController.php │ │ │ ├── NotificationController.php │ │ │ ├── Onboarding/ │ │ │ │ └── InitialController.php │ │ │ ├── Organisation/ │ │ │ │ ├── MemberController.php │ │ │ │ └── OrganisationController.php │ │ │ ├── Passport/ │ │ │ │ └── ClientController.php │ │ │ ├── PasswordSecurityController.php │ │ │ ├── PayPalController.php │ │ │ ├── PresetController.php │ │ │ ├── Quests/ │ │ │ │ ├── ElementController.php │ │ │ │ └── QuestController.php │ │ │ ├── Races/ │ │ │ │ ├── MemberController.php │ │ │ │ └── RaceController.php │ │ │ ├── ReferralController.php │ │ │ ├── RelationController.php │ │ │ ├── ReminderUpdateController.php │ │ │ ├── Roadmap/ │ │ │ │ ├── FeatureController.php │ │ │ │ └── RoadmapController.php │ │ │ ├── Search/ │ │ │ │ ├── AttributeController.php │ │ │ │ ├── CalendarController.php │ │ │ │ ├── CampaignController.php │ │ │ │ ├── FullTextController.php │ │ │ │ ├── GameSystemSearchController.php │ │ │ │ ├── ImageController.php │ │ │ │ ├── ListController.php │ │ │ │ ├── LiveController.php │ │ │ │ ├── MapGroupController.php │ │ │ │ ├── MarkerController.php │ │ │ │ ├── MentionController.php │ │ │ │ ├── RecentController.php │ │ │ │ └── TemplateController.php │ │ │ ├── SearchController.php │ │ │ ├── Settings/ │ │ │ │ ├── AccountController.php │ │ │ │ ├── ApiController.php │ │ │ │ ├── AppearanceController.php │ │ │ │ ├── Apps/ │ │ │ │ │ └── DiscordController.php │ │ │ │ ├── AppsController.php │ │ │ │ ├── BoostController.php │ │ │ │ ├── BragiController.php │ │ │ │ ├── ClientController.php │ │ │ │ ├── NewsletterApiController.php │ │ │ │ ├── NewsletterController.php │ │ │ │ ├── PatreonController.php │ │ │ │ ├── PremiumController.php │ │ │ │ ├── ProfileController.php │ │ │ │ ├── ReferralController.php │ │ │ │ ├── ReleaseController.php │ │ │ │ ├── Subscription/ │ │ │ │ │ ├── CancellationController.php │ │ │ │ │ ├── CancelledController.php │ │ │ │ │ ├── FinishController.php │ │ │ │ │ └── FreeTrialController.php │ │ │ │ ├── SubscriptionApiController.php │ │ │ │ ├── SubscriptionController.php │ │ │ │ └── TutorialController.php │ │ │ ├── SetupController.php │ │ │ ├── Spotlights/ │ │ │ │ └── ApplicationController.php │ │ │ ├── Subscription/ │ │ │ │ └── PayPal/ │ │ │ │ └── RenewalController.php │ │ │ ├── Summernote/ │ │ │ │ └── GalleryController.php │ │ │ ├── Tags/ │ │ │ │ ├── ChildController.php │ │ │ │ ├── PostController.php │ │ │ │ ├── TagController.php │ │ │ │ └── TransferController.php │ │ │ ├── Templates/ │ │ │ │ └── LoadController.php │ │ │ ├── Timelines/ │ │ │ │ ├── TimelineController.php │ │ │ │ ├── TimelineElementController.php │ │ │ │ ├── TimelineEraController.php │ │ │ │ └── TimelineReorderController.php │ │ │ ├── TroubleshootingController.php │ │ │ ├── User/ │ │ │ │ ├── EmailValidationController.php │ │ │ │ └── ProfileController.php │ │ │ ├── WebhookController.php │ │ │ ├── Whiteboards/ │ │ │ │ ├── ApiController.php │ │ │ │ ├── CrudController.php │ │ │ │ └── DrawController.php │ │ │ └── Widgets/ │ │ │ └── CalendarWidgetController.php │ │ ├── Kernel.php │ │ ├── Middleware/ │ │ │ ├── Adless.php │ │ │ ├── ApiLogMiddleware.php │ │ │ ├── CachedResponse.php │ │ │ ├── Campaigns/ │ │ │ │ ├── Boosted.php │ │ │ │ ├── Premium.php │ │ │ │ └── Superboosted.php │ │ │ ├── CheckIfUserBanned.php │ │ │ ├── EncryptCookies.php │ │ │ ├── HttpsProtocol.php │ │ │ ├── Identity.php │ │ │ ├── LastCampaign.php │ │ │ ├── LocaleChange.php │ │ │ ├── LocalizeDatetime.php │ │ │ ├── LoginRedirect.php │ │ │ ├── OTP.php │ │ │ ├── PasswordConfirm.php │ │ │ ├── RedirectIfAuthenticated.php │ │ │ ├── ReplicationSwitcher.php │ │ │ ├── Subscriptions.php │ │ │ ├── Tracking.php │ │ │ ├── Translator.php │ │ │ ├── TrimStrings.php │ │ │ ├── TrustProxies.php │ │ │ └── VerifyCsrfToken.php │ │ ├── Requests/ │ │ │ ├── API/ │ │ │ │ ├── PatchEntity.php │ │ │ │ ├── StoreEntities.php │ │ │ │ ├── StoreReminder.php │ │ │ │ ├── UpdateUserRole.php │ │ │ │ └── UploadEntityImage.php │ │ │ ├── AddCalendarEvent.php │ │ │ ├── AddCalendarWeather.php │ │ │ ├── ApplyAttributeTemplate.php │ │ │ ├── BragiRequest.php │ │ │ ├── BulkRequest.php │ │ │ ├── Bulks/ │ │ │ │ ├── Copy.php │ │ │ │ ├── Template.php │ │ │ │ └── Transform.php │ │ │ ├── Campaigns/ │ │ │ │ ├── ApproveApplication.php │ │ │ │ ├── DefaultImageDestroy.php │ │ │ │ ├── DefaultImageStore.php │ │ │ │ ├── DestroyDefaultThumbnail.php │ │ │ │ ├── GalleryImageFolderStore.php │ │ │ │ ├── GalleryImageStore.php │ │ │ │ ├── GalleryImageUpdate.php │ │ │ │ ├── PatchCampaignApplication.php │ │ │ │ ├── RejectApplication.php │ │ │ │ ├── StoreCampaignApplication.php │ │ │ │ ├── StoreCampaignApplicationStatus.php │ │ │ │ ├── StoreCampaignSetup.php │ │ │ │ ├── StoreCampaignVisibility.php │ │ │ │ ├── StoreDefaultThumbnail.php │ │ │ │ ├── StoreDefaults.php │ │ │ │ ├── StoreImage.php │ │ │ │ ├── StoreTheme.php │ │ │ │ └── Vanity.php │ │ │ ├── CopyEntityToCampaignRequest.php │ │ │ ├── CopyInventory.php │ │ │ ├── DeleteCampaign.php │ │ │ ├── DeleteEntityType.php │ │ │ ├── DeleteSettingsAccount.php │ │ │ ├── EditPostVisibility.php │ │ │ ├── Entities/ │ │ │ │ └── UpdateListingPreferenceRequest.php │ │ │ ├── FilterPublicCampaignRequest.php │ │ │ ├── Front/ │ │ │ │ └── StoreCommunityEventEntry.php │ │ │ ├── Gallery/ │ │ │ │ ├── CreateFolder.php │ │ │ │ ├── DeleteImages.php │ │ │ │ ├── MoveFiles.php │ │ │ │ ├── UpdateFile.php │ │ │ │ ├── UpdateFiles.php │ │ │ │ ├── UpdateFocus.php │ │ │ │ ├── UploadFile.php │ │ │ │ ├── UploadFiles.php │ │ │ │ └── UploadUrl.php │ │ │ ├── GalleryBulkDelete.php │ │ │ ├── GenerateInventory.php │ │ │ ├── HistoryRequest.php │ │ │ ├── ManageFamilies.php │ │ │ ├── ManageRaces.php │ │ │ ├── MoveEntity.php │ │ │ ├── MoveEntityRequest.php │ │ │ ├── MovePostRequest.php │ │ │ ├── Onboarding/ │ │ │ │ └── InitialRequest.php │ │ │ ├── PermissionTestRequest.php │ │ │ ├── QuickCreator/ │ │ │ │ ├── StoreEntity.php │ │ │ │ └── StorePost.php │ │ │ ├── ReadBanner.php │ │ │ ├── RecoverEntity.php │ │ │ ├── RecoverPost.php │ │ │ ├── RenameEntityFile.php │ │ │ ├── ReorderAbility.php │ │ │ ├── ReorderBookmarks.php │ │ │ ├── ReorderGroups.php │ │ │ ├── ReorderLayers.php │ │ │ ├── ReorderStories.php │ │ │ ├── ReorderStyles.php │ │ │ ├── ReorderTimeline.php │ │ │ ├── SaveAttributes.php │ │ │ ├── SaveAttributesApi.php │ │ │ ├── SaveUserHelp.php │ │ │ ├── Search/ │ │ │ │ └── MentionRequest.php │ │ │ ├── Settings/ │ │ │ │ ├── NewsletterStore.php │ │ │ │ ├── StoreApiToken.php │ │ │ │ ├── StoreClient.php │ │ │ │ ├── UserAltSubscribeStore.php │ │ │ │ ├── UserBillingStore.php │ │ │ │ └── UserSubscribeStore.php │ │ │ ├── Spotlights/ │ │ │ │ └── ApplyRequest.php │ │ │ ├── StoreAbility.php │ │ │ ├── StoreAbilityEntity.php │ │ │ ├── StoreAttribute.php │ │ │ ├── StoreAttributeTemplate.php │ │ │ ├── StoreBillingSettings.php │ │ │ ├── StoreBookmark.php │ │ │ ├── StoreCalendar.php │ │ │ ├── StoreCampaign.php │ │ │ ├── StoreCampaignDashboard.php │ │ │ ├── StoreCampaignDashboardWidget.php │ │ │ ├── StoreCampaignInvite.php │ │ │ ├── StoreCampaignRole.php │ │ │ ├── StoreCampaignRoleUser.php │ │ │ ├── StoreCampaignStyle.php │ │ │ ├── StoreCampaignTheme.php │ │ │ ├── StoreCampaignUser.php │ │ │ ├── StoreCharacter.php │ │ │ ├── StoreCharacterFamily.php │ │ │ ├── StoreCharacterOrganisation.php │ │ │ ├── StoreCharacterRace.php │ │ │ ├── StoreConversation.php │ │ │ ├── StoreConversationMessage.php │ │ │ ├── StoreConversationParticipant.php │ │ │ ├── StoreCreature.php │ │ │ ├── StoreCustomEntity.php │ │ │ ├── StoreDiceRoll.php │ │ │ ├── StoreEntityAbility.php │ │ │ ├── StoreEntityAlias.php │ │ │ ├── StoreEntityAsset.php │ │ │ ├── StoreEntityAssets.php │ │ │ ├── StoreEntityFile.php │ │ │ ├── StoreEntityLink.php │ │ │ ├── StoreEntityPermission.php │ │ │ ├── StoreEntityTag.php │ │ │ ├── StoreEntityType.php │ │ │ ├── StoreEvent.php │ │ │ ├── StoreFamily.php │ │ │ ├── StoreFamilyTree.php │ │ │ ├── StoreFeature.php │ │ │ ├── StoreImageFocus.php │ │ │ ├── StoreInventory.php │ │ │ ├── StoreItem.php │ │ │ ├── StoreJournal.php │ │ │ ├── StoreLocation.php │ │ │ ├── StoreMap.php │ │ │ ├── StoreMapGroup.php │ │ │ ├── StoreMapLayer.php │ │ │ ├── StoreMapMarker.php │ │ │ ├── StoreMarketplaceProfile.php │ │ │ ├── StoreNote.php │ │ │ ├── StoreOrganisation.php │ │ │ ├── StoreOrganisationMember.php │ │ │ ├── StoreOrganisationMembers.php │ │ │ ├── StorePermission.php │ │ │ ├── StorePost.php │ │ │ ├── StorePreset.php │ │ │ ├── StoreQuest.php │ │ │ ├── StoreQuestElement.php │ │ │ ├── StoreRace.php │ │ │ ├── StoreRelation.php │ │ │ ├── StoreSettingsAccount.php │ │ │ ├── StoreSettingsAccountEmail.php │ │ │ ├── StoreSettingsLayout.php │ │ │ ├── StoreSettingsProfile.php │ │ │ ├── StoreShare.php │ │ │ ├── StoreTag.php │ │ │ ├── StoreTagEntity.php │ │ │ ├── StoreTimeline.php │ │ │ ├── StoreTimelineElement.php │ │ │ ├── StoreTimelineEra.php │ │ │ ├── StoreWebhook.php │ │ │ ├── StoreWhiteboard.php │ │ │ ├── SubscriptionCancel.php │ │ │ ├── TransferTag.php │ │ │ ├── TransformEntity.php │ │ │ ├── TransformEntityRequest.php │ │ │ ├── Translation/ │ │ │ │ └── StoreFaqTranslationRequest.php │ │ │ ├── UpdateAttribute.php │ │ │ ├── UpdateCalendarEvent.php │ │ │ ├── UpdateCampaign.php │ │ │ ├── UpdateCampaignHeader.php │ │ │ ├── UpdateEntityAbility.php │ │ │ ├── UpdateEntityAttribute.php │ │ │ ├── UpdateEntityEntry.php │ │ │ ├── UpdateEntityFile.php │ │ │ ├── UpdateEntityImage.php │ │ │ ├── UpdateEntityTags.php │ │ │ ├── UpdateInventory.php │ │ │ ├── UpdateModuleName.php │ │ │ ├── UpdateRelation.php │ │ │ ├── UpdateUserRoles.php │ │ │ ├── ValidateCoupon.php │ │ │ ├── ValidatePledge.php │ │ │ ├── ValidateReminderLength.php │ │ │ └── Whiteboards/ │ │ │ ├── CreateRequest.php │ │ │ ├── CreateStrokeRequest.php │ │ │ ├── StoreShapeRequest.php │ │ │ ├── UpdateRequest.php │ │ │ └── UpdateShapeRequest.php │ │ ├── Resources/ │ │ │ ├── AbilityResource.php │ │ │ ├── Api/ │ │ │ │ ├── CategoryStatusResource.php │ │ │ │ ├── DefaultEntityTypeResource.php │ │ │ │ ├── EntityImagesResource.php │ │ │ │ └── EntityTagResource.php │ │ │ ├── ApiEntityTagResource.php │ │ │ ├── ApiExclusion.php │ │ │ ├── ApiSync.php │ │ │ ├── ApplicationResource.php │ │ │ ├── AttributeResource.php │ │ │ ├── AttributeTemplateResource.php │ │ │ ├── Attributes/ │ │ │ │ └── LiveAttributeResource.php │ │ │ ├── BookmarkResource.php │ │ │ ├── CalendarResource.php │ │ │ ├── CalendarWeatherResource.php │ │ │ ├── CampaignDashboardWidgetResource.php │ │ │ ├── CampaignResource.php │ │ │ ├── CampaignStyleResource.php │ │ │ ├── CampaignUserResource.php │ │ │ ├── CampaignUserRoleResource.php │ │ │ ├── CategoryStatusResource.php │ │ │ ├── CharacterOrganisationResource.php │ │ │ ├── CharacterResource.php │ │ │ ├── CharacterTraitResource.php │ │ │ ├── Conversation/ │ │ │ │ ├── ConversationMessageResource.php │ │ │ │ └── ConversationResource.php │ │ │ ├── ConversationMessageResource.php │ │ │ ├── ConversationParticipantResource.php │ │ │ ├── ConversationResource.php │ │ │ ├── CreatureResource.php │ │ │ ├── DiceRollResource.php │ │ │ ├── Entities/ │ │ │ │ ├── ExploreResource.php │ │ │ │ └── TemplateResource.php │ │ │ ├── Entity.php │ │ │ ├── EntityAbilityResource.php │ │ │ ├── EntityAssetResource.php │ │ │ ├── EntityChild.php │ │ │ ├── EntityDefaultThumbnailResource.php │ │ │ ├── EntityMentionResource.php │ │ │ ├── EntityPermissionResource.php │ │ │ ├── EntityResource.php │ │ │ ├── EntityTagResource.php │ │ │ ├── EntityTypeResource.php │ │ │ ├── EventResource.php │ │ │ ├── FamilyResource.php │ │ │ ├── FamilyTreeResource.php │ │ │ ├── Gallery/ │ │ │ │ └── Tiptap/ │ │ │ │ └── ImageResource.php │ │ │ ├── GalleryFile.php │ │ │ ├── GalleryFileFull.php │ │ │ ├── ImageResource.php │ │ │ ├── InventoryResource.php │ │ │ ├── ItemResource.php │ │ │ ├── JournalResource.php │ │ │ ├── KankaCollection.php │ │ │ ├── LocationResource.php │ │ │ ├── MapGroupResource.php │ │ │ ├── MapLayerResource.php │ │ │ ├── MapMarkerResource.php │ │ │ ├── MapResource.php │ │ │ ├── ModelResource.php │ │ │ ├── NoteResource.php │ │ │ ├── OrganisationMemberResource.php │ │ │ ├── OrganisationResource.php │ │ │ ├── PostLayoutResource.php │ │ │ ├── PostPermissionResource.php │ │ │ ├── PostResource.php │ │ │ ├── ProfileResource.php │ │ │ ├── Public/ │ │ │ │ └── CampaignResource.php │ │ │ ├── QuestElementResource.php │ │ │ ├── QuestResource.php │ │ │ ├── RaceResource.php │ │ │ ├── RelationResource.php │ │ │ ├── ReminderResource.php │ │ │ ├── TagResource.php │ │ │ ├── TimelineElementResource.php │ │ │ ├── TimelineEraResource.php │ │ │ ├── TimelineResource.php │ │ │ ├── UserResource.php │ │ │ ├── VisibilityResource.php │ │ │ ├── VoteResource.php │ │ │ ├── Web/ │ │ │ │ └── EntityResource.php │ │ │ └── Whiteboards/ │ │ │ ├── EntityResource.php │ │ │ ├── ShapeResource.php │ │ │ └── StrokeResource.php │ │ └── Validators/ │ │ └── HashValidator.php │ ├── Jobs/ │ │ ├── CalendarsClearElapsed.php │ │ ├── CampaignRoleUserJob.php │ │ ├── Campaigns/ │ │ │ ├── Delete.php │ │ │ ├── Export.php │ │ │ ├── Hide.php │ │ │ ├── Import.php │ │ │ ├── ImportCsv.php │ │ │ ├── NotifyAdmins.php │ │ │ └── Populate.php │ │ ├── ChunkMapJob.php │ │ ├── Copyright/ │ │ │ ├── DeleteCampaignImage.php │ │ │ ├── DeleteEntityImage.php │ │ │ └── DeleteUserImage.php │ │ ├── DeletedCampaignCleanupJob.php │ │ ├── Discord/ │ │ │ ├── AdminInviteJob.php │ │ │ ├── ReportJob.php │ │ │ ├── SendNewFeature.php │ │ │ └── UpdateFeatureUpvotes.php │ │ ├── DiscordRoleJob.php │ │ ├── Emails/ │ │ │ ├── EmailChangeJob.php │ │ │ ├── MailSettingsChangeJob.php │ │ │ ├── Purge/ │ │ │ │ ├── FirstWarningJob.php │ │ │ │ └── SecondWarningJob.php │ │ │ ├── SubscriptionCancelEmailJob.php │ │ │ ├── SubscriptionCreatedEmailJob.php │ │ │ ├── SubscriptionDeletedEmailJob.php │ │ │ ├── SubscriptionDowngradedEmailJob.php │ │ │ ├── SubscriptionFailedEmailJob.php │ │ │ ├── Subscriptions/ │ │ │ │ ├── Admin/ │ │ │ │ │ └── PaypalRenewedJob.php │ │ │ │ ├── Converted.php │ │ │ │ ├── EmailValidationJob.php │ │ │ │ ├── ExpiringCardAlert.php │ │ │ │ ├── PaypalExpiringAlert.php │ │ │ │ ├── UpcomingYearlyAlert.php │ │ │ │ └── WelcomeSubscriptionEmailJob.php │ │ │ ├── TrialAcceptedEmailJob.php │ │ │ └── WelcomeEmailJob.php │ │ ├── EntityMappingJob.php │ │ ├── EntityUpdatedJob.php │ │ ├── EntityWebhookJob.php │ │ ├── FileCleanup.php │ │ ├── ResetCssCache.php │ │ ├── Roadmap/ │ │ │ └── DiscordFeatureJob.php │ │ ├── Spotlight/ │ │ │ └── DiscordSpotlightJob.php │ │ ├── SubscriptionEndJob.php │ │ ├── TestWebhookJob.php │ │ └── Users/ │ │ ├── AbandonedCart.php │ │ ├── DeleteUser.php │ │ ├── NewPassword.php │ │ ├── UnsubscribeUser.php │ │ ├── UnsyncDiscord.php │ │ └── UpdateEmail.php │ ├── Listeners/ │ │ ├── Campaigns/ │ │ │ ├── Admins/ │ │ │ │ └── Notify.php │ │ │ ├── Applications/ │ │ │ │ └── LogApplication.php │ │ │ ├── Campaigns/ │ │ │ │ └── LogCampaign.php │ │ │ ├── ClearCampaignCache.php │ │ │ ├── ClearCampaignThemeCache.php │ │ │ ├── ClearCampaignUsersSaved.php │ │ │ ├── Dashboards/ │ │ │ │ └── LogDashboard.php │ │ │ ├── EntityTypes/ │ │ │ │ └── LogEntityType.php │ │ │ ├── Exports/ │ │ │ │ └── LogExport.php │ │ │ ├── Invites/ │ │ │ │ └── LogInvite.php │ │ │ ├── Members/ │ │ │ │ ├── LogMember.php │ │ │ │ ├── LogUserRoleChanged.php │ │ │ │ └── RunRoleUserJob.php │ │ │ ├── Plugins/ │ │ │ │ ├── ClearThemeCache.php │ │ │ │ └── LogPlugin.php │ │ │ ├── Roles/ │ │ │ │ └── LogRole.php │ │ │ ├── Sidebar/ │ │ │ │ └── LogSidebar.php │ │ │ ├── Styles/ │ │ │ │ ├── ClearStylesCache.php │ │ │ │ └── LogStyle.php │ │ │ ├── Thumbnails/ │ │ │ │ ├── LogThumbnail.php │ │ │ │ └── LogThumbnails.php │ │ │ └── Webhooks/ │ │ │ └── LogWebhook.php │ │ ├── Entities/ │ │ │ └── LogEntity.php │ │ ├── Posts/ │ │ │ └── LogPost.php │ │ ├── SendAdminInviteNotification.php │ │ ├── SendFeatureNotification.php │ │ ├── SendSpotlightNotification.php │ │ ├── UserEventSubscriber.php │ │ └── Users/ │ │ ├── ClearUserCache.php │ │ ├── SendEmailUpdate.php │ │ └── Subscriptions/ │ │ └── LogPremium.php │ ├── Livewire/ │ │ ├── Campaigns/ │ │ │ ├── CsvImport.php │ │ │ ├── ExportsTable.php │ │ │ └── Tags.php │ │ ├── EntityListing.php │ │ ├── Roadmap/ │ │ │ ├── Form.php │ │ │ ├── Ideas.php │ │ │ └── Upvote.php │ │ ├── Roadmap.php │ │ ├── Users/ │ │ │ └── Otp.php │ │ └── Widgets/ │ │ ├── GalleryCarousel.php │ │ └── RandomEntity.php │ ├── Mail/ │ │ ├── Admin/ │ │ │ └── Subscriptions/ │ │ │ └── ConvertedMail.php │ │ ├── Purge/ │ │ │ ├── FirstWarning.php │ │ │ └── SecondWarning.php │ │ ├── Subscription/ │ │ │ ├── Admin/ │ │ │ │ ├── CancelledSubscriptionMail.php │ │ │ │ ├── DowngradedSubscriptionMail.php │ │ │ │ ├── NewSubscriptionMail.php │ │ │ │ ├── NewTrialAcceptedMail.php │ │ │ │ └── PaypalRenewedMail.php │ │ │ └── User/ │ │ │ ├── CancelledUserSubscriptionMail.php │ │ │ ├── EmailChangeMail.php │ │ │ ├── ExpiringCardEmail.php │ │ │ ├── FailedUserSubscriptionMail.php │ │ │ ├── NewElementalSubscriptionMail.php │ │ │ ├── NewSubscriberMail.php │ │ │ ├── PaypalExpiringMail.php │ │ │ ├── UpcomingYearlyEmail.php │ │ │ └── ValidationEmail.php │ │ ├── Users/ │ │ │ └── NewPassword.php │ │ └── WelcomeEmail.php │ ├── Models/ │ │ ├── Ability.php │ │ ├── Ad.php │ │ ├── AdminInvite.php │ │ ├── ApiLog.php │ │ ├── AppRelease.php │ │ ├── Application.php │ │ ├── Attribute.php │ │ ├── AttributeTemplate.php │ │ ├── Bookmark.php │ │ ├── BragiLog.php │ │ ├── Calendar.php │ │ ├── CalendarWeather.php │ │ ├── Campaign.php │ │ ├── CampaignBoost.php │ │ ├── CampaignDashboard.php │ │ ├── CampaignDashboardRole.php │ │ ├── CampaignDashboardWidget.php │ │ ├── CampaignDashboardWidgetTag.php │ │ ├── CampaignDescription.php │ │ ├── CampaignEvent.php │ │ ├── CampaignExport.php │ │ ├── CampaignFilter.php │ │ ├── CampaignFlag.php │ │ ├── CampaignFollower.php │ │ ├── CampaignGenre.php │ │ ├── CampaignImport.php │ │ ├── CampaignInvite.php │ │ ├── CampaignPermission.php │ │ ├── CampaignPlugin.php │ │ ├── CampaignRole.php │ │ ├── CampaignRoleUser.php │ │ ├── CampaignSetting.php │ │ ├── CampaignStyle.php │ │ ├── CampaignSystem.php │ │ ├── CampaignUser.php │ │ ├── CategoryStatus.php │ │ ├── Character.php │ │ ├── CharacterFamily.php │ │ ├── CharacterOrganisation.php │ │ ├── CharacterRace.php │ │ ├── CharacterTrait.php │ │ ├── CommunityEvent.php │ │ ├── CommunityEventEntry.php │ │ ├── CommunityVote.php │ │ ├── CommunityVoteBallot.php │ │ ├── Concerns/ │ │ │ ├── Acl.php │ │ │ ├── Blameable.php │ │ │ ├── Boosted.php │ │ │ ├── CampaignLimit.php │ │ │ ├── CompositeKey.php │ │ │ ├── Copiable.php │ │ │ ├── EntityAsset.php │ │ │ ├── EntityLogs.php │ │ │ ├── EntityType.php │ │ │ ├── HasCampaign.php │ │ │ ├── HasEntity.php │ │ │ ├── HasEntry.php │ │ │ ├── HasFilters.php │ │ │ ├── HasImage.php │ │ │ ├── HasLocation.php │ │ │ ├── HasLocations.php │ │ │ ├── HasMentions.php │ │ │ ├── HasReminder.php │ │ │ ├── HasSlug.php │ │ │ ├── HasSuggestions.php │ │ │ ├── HasUser.php │ │ │ ├── HasVisibility.php │ │ │ ├── LastSync.php │ │ │ ├── Orderable.php │ │ │ ├── Paginatable.php │ │ │ ├── Privatable.php │ │ │ ├── Purifiable.php │ │ │ ├── Sanitizable.php │ │ │ ├── Searchable.php │ │ │ ├── SimpleSortableTrait.php │ │ │ ├── Sortable.php │ │ │ ├── SortableTrait.php │ │ │ ├── Taggable.php │ │ │ ├── Templatable.php │ │ │ ├── TouchSilently.php │ │ │ ├── UserBoosters.php │ │ │ └── UserTokens.php │ │ ├── Conversation.php │ │ ├── ConversationMessage.php │ │ ├── ConversationParticipant.php │ │ ├── Creature.php │ │ ├── DiceRoll.php │ │ ├── DiceRollResult.php │ │ ├── Entity.php │ │ ├── EntityAbility.php │ │ ├── EntityAsset.php │ │ ├── EntityEventType.php │ │ ├── EntityListingPreference.php │ │ ├── EntityLocation.php │ │ ├── EntityLog.php │ │ ├── EntityMention.php │ │ ├── EntityTag.php │ │ ├── EntityType.php │ │ ├── EntityUser.php │ │ ├── Event.php │ │ ├── Family.php │ │ ├── FamilyTree.php │ │ ├── Faq.php │ │ ├── FaqCategory.php │ │ ├── FaqTranslation.php │ │ ├── Feature.php │ │ ├── FeatureCategory.php │ │ ├── FeatureFile.php │ │ ├── FeatureStatus.php │ │ ├── FeatureUpvote.php │ │ ├── FeatureVote.php │ │ ├── GameSystem.php │ │ ├── Genre.php │ │ ├── Image.php │ │ ├── ImageMention.php │ │ ├── Inventory.php │ │ ├── Item.php │ │ ├── ItemCreator.php │ │ ├── JobLog.php │ │ ├── Journal.php │ │ ├── Location.php │ │ ├── Map.php │ │ ├── MapGroup.php │ │ ├── MapLayer.php │ │ ├── MapMarker.php │ │ ├── MiscModel.php │ │ ├── Note.php │ │ ├── Notification.php │ │ ├── OTPAuthentication.php │ │ ├── Organisation.php │ │ ├── OrganisationMember.php │ │ ├── PasswordSecurity.php │ │ ├── Playstyle.php │ │ ├── Pledge.php │ │ ├── Plugin.php │ │ ├── PluginType.php │ │ ├── PluginVersion.php │ │ ├── PluginVersionEntity.php │ │ ├── Post.php │ │ ├── PostLayout.php │ │ ├── PostPermission.php │ │ ├── PostTag.php │ │ ├── Preset.php │ │ ├── PresetType.php │ │ ├── Quest.php │ │ ├── QuestElement.php │ │ ├── Race.php │ │ ├── Referral.php │ │ ├── ReferralEvent.php │ │ ├── Relation.php │ │ ├── Relations/ │ │ │ ├── CalendarRelations.php │ │ │ ├── CampaignRelations.php │ │ │ ├── EntityRelations.php │ │ │ └── UserRelations.php │ │ ├── Reminder.php │ │ ├── Role.php │ │ ├── Scopes/ │ │ │ ├── AclScope.php │ │ │ ├── CalendarWeatherScopes.php │ │ │ ├── CampaignScope.php │ │ │ ├── CampaignScopes.php │ │ │ ├── CommunityEventScopes.php │ │ │ ├── CommunityVoteScopes.php │ │ │ ├── EntityAssetScopes.php │ │ │ ├── EntityEventScopes.php │ │ │ ├── EntityScopes.php │ │ │ ├── Pinnable.php │ │ │ ├── PrivateScope.php │ │ │ ├── SubEntityScopes.php │ │ │ ├── TagScopes.php │ │ │ ├── UserScope.php │ │ │ └── VisibilityIDScope.php │ │ ├── Spotlight.php │ │ ├── SpotlightContent.php │ │ ├── SubscriptionCancellation.php │ │ ├── SubscriptionSource.php │ │ ├── Tag.php │ │ ├── Theme.php │ │ ├── Tier.php │ │ ├── TierPrice.php │ │ ├── Timeline.php │ │ ├── TimelineElement.php │ │ ├── TimelineEra.php │ │ ├── User.php │ │ ├── UserApp.php │ │ ├── UserFlag.php │ │ ├── UserLog.php │ │ ├── UserRole.php │ │ ├── UserSetting.php │ │ ├── UserValidation.php │ │ ├── Users/ │ │ │ └── Tutorial.php │ │ ├── Visibility.php │ │ ├── Webhook.php │ │ ├── Whiteboard.php │ │ ├── WhiteboardShape.php │ │ └── WhiteboardStroke.php │ ├── Notifications/ │ │ └── Header.php │ ├── Observers/ │ │ ├── AdminInviteObserver.php │ │ ├── ApplicationObserver.php │ │ ├── BlameableObserver.php │ │ ├── BookmarkObserver.php │ │ ├── CalendarObserver.php │ │ ├── CampaignDashboardObserver.php │ │ ├── CampaignDashboardRoleObserver.php │ │ ├── CampaignDashboardWidgetObserver.php │ │ ├── CampaignDescriptionObserver.php │ │ ├── CampaignExportObserver.php │ │ ├── CampaignFollowerObserver.php │ │ ├── CampaignInviteObserver.php │ │ ├── CampaignObserver.php │ │ ├── CampaignPluginObserver.php │ │ ├── CampaignRoleObserver.php │ │ ├── CampaignRoleUserObserver.php │ │ ├── CampaignSettingObserver.php │ │ ├── CampaignStyleObserver.php │ │ ├── CampaignUserObserver.php │ │ ├── ChildEntityObserver.php │ │ ├── Concerns/ │ │ │ └── HasMany.php │ │ ├── ConversationMessageObserver.php │ │ ├── ConversationObserver.php │ │ ├── DiceRollObserver.php │ │ ├── DiceRollResultObserver.php │ │ ├── EntityAbilityObserver.php │ │ ├── EntityAssetObserver.php │ │ ├── EntityLogObserver.php │ │ ├── EntityObserver.php │ │ ├── EntityTypeObserver.php │ │ ├── EntryObserver.php │ │ ├── FamilyTreeObserver.php │ │ ├── FeatureObserver.php │ │ ├── ImageObserver.php │ │ ├── ImageableObserver.php │ │ ├── InventoryObserver.php │ │ ├── MapGroupObserver.php │ │ ├── MapLayerObserver.php │ │ ├── MapMarkerObserver.php │ │ ├── MapObserver.php │ │ ├── OrganisationMemberObserver.php │ │ ├── PostObserver.php │ │ ├── PresetObserver.php │ │ ├── PurifiableObserver.php │ │ ├── PurifiableTrait.php │ │ ├── QuestElementObserver.php │ │ ├── Remindable.php │ │ ├── ReminderObserver.php │ │ ├── ReorderTrait.php │ │ ├── SanitizedObserver.php │ │ ├── SlugObserver.php │ │ ├── SuggestionObserver.php │ │ ├── TaggableObserver.php │ │ ├── TimelineElementObserver.php │ │ ├── TimelineEraObserver.php │ │ ├── UserLogObserver.php │ │ ├── UserObserver.php │ │ ├── VisibilityObserver.php │ │ ├── WebhookObserver.php │ │ └── WhiteboardShapeObserver.php │ ├── Policies/ │ │ ├── AbilityPolicy.php │ │ ├── AttributeTemplatePolicy.php │ │ ├── BookmarkPolicy.php │ │ ├── CalendarPolicy.php │ │ ├── CampaignBoostPolicy.php │ │ ├── CampaignPluginPolicy.php │ │ ├── CampaignPolicy.php │ │ ├── CampaignRolePolicy.php │ │ ├── CampaignRoleUserPolicy.php │ │ ├── CampaignStylePolicy.php │ │ ├── CampaignUserPolicy.php │ │ ├── CharacterPolicy.php │ │ ├── ClientPolicy.php │ │ ├── CommunityEventEntryPolicy.php │ │ ├── CommunityVotePolicy.php │ │ ├── ConversationMessagePolicy.php │ │ ├── ConversationPolicy.php │ │ ├── CreaturePolicy.php │ │ ├── DiceRollPolicy.php │ │ ├── EntityPolicy.php │ │ ├── EntityTypePolicy.php │ │ ├── EventPolicy.php │ │ ├── FamilyPolicy.php │ │ ├── FeaturePolicy.php │ │ ├── ImagePolicy.php │ │ ├── ItemPolicy.php │ │ ├── JournalPolicy.php │ │ ├── LocationPolicy.php │ │ ├── MapGroupPolicy.php │ │ ├── MapLayerPolicy.php │ │ ├── MapMarkerPolicy.php │ │ ├── MapPolicy.php │ │ ├── MiscPolicy.php │ │ ├── NotePolicy.php │ │ ├── OrganisationMemberPolicy.php │ │ ├── OrganisationPolicy.php │ │ ├── PluginPolicy.php │ │ ├── PostPolicy.php │ │ ├── QuestPolicy.php │ │ ├── RacePolicy.php │ │ ├── RelationPolicy.php │ │ ├── ReminderPolicy.php │ │ ├── TagPolicy.php │ │ ├── TimelineEraPolicy.php │ │ ├── TimelinePolicy.php │ │ ├── TokenPolicy.php │ │ ├── UserPolicy.php │ │ ├── WebhookPolicy.php │ │ └── WhiteboardPolicy.php │ ├── Providers/ │ │ ├── AppServiceProvider.php │ │ ├── AttributesServiceProvider.php │ │ ├── AuthServiceProvider.php │ │ ├── AvatarServiceProvider.php │ │ ├── BreadcrumbServiceProvider.php │ │ ├── BroadcastServiceProvider.php │ │ ├── CacheServiceProvider.php │ │ ├── CampaignLocalizationServiceProvider.php │ │ ├── DashboardServiceProvider.php │ │ ├── DatagridRendererProvider.php │ │ ├── DatalayerServiceProvider.php │ │ ├── DomainServiceProvider.php │ │ ├── EntitySetupServiceProvider.php │ │ ├── EventServiceProvider.php │ │ ├── FormCopyServiceProvider.php │ │ ├── IdentityServiceProvider.php │ │ ├── ImgServiceProvider.php │ │ ├── ImporterServiceProvider.php │ │ ├── LimitServiceProvider.php │ │ ├── Logs/ │ │ │ └── ApiLogServiceProvider.php │ │ ├── MentionsServiceProvider.php │ │ ├── ModuleServiceProvider.php │ │ ├── PermissionsServiceProvider.php │ │ └── RouteServiceProvider.php │ ├── Renderers/ │ │ ├── CalendarRenderer.php │ │ ├── CharacterSheets/ │ │ │ ├── Blade.php │ │ │ ├── Custom.php │ │ │ └── Renderer.php │ │ ├── DatagridRenderer.php │ │ ├── DatagridRenderer2.php │ │ └── Layouts/ │ │ ├── Ability/ │ │ │ ├── Ability.php │ │ │ └── Entity.php │ │ ├── Calendar/ │ │ │ └── Reminder.php │ │ ├── Campaign/ │ │ │ ├── CampaignImport.php │ │ │ ├── CampaignRole.php │ │ │ ├── CampaignUser.php │ │ │ ├── Plugin.php │ │ │ ├── PostRecovery.php │ │ │ ├── Recovery.php │ │ │ ├── Theme.php │ │ │ └── Webhook.php │ │ ├── Character/ │ │ │ └── Organisation.php │ │ ├── Columns/ │ │ │ ├── Action.php │ │ │ ├── Checkbox.php │ │ │ ├── Column.php │ │ │ └── Standard.php │ │ ├── Creature/ │ │ │ └── Creature.php │ │ ├── Entity/ │ │ │ ├── Children.php │ │ │ ├── Relation.php │ │ │ └── Reminder.php │ │ ├── Event/ │ │ │ └── Event.php │ │ ├── Family/ │ │ │ ├── Character.php │ │ │ └── Family.php │ │ ├── Header.php │ │ ├── Item/ │ │ │ ├── Entity.php │ │ │ └── Item.php │ │ ├── Journal/ │ │ │ └── Journal.php │ │ ├── Layout.php │ │ ├── Location/ │ │ │ ├── Character.php │ │ │ ├── Event.php │ │ │ ├── Location.php │ │ │ └── Quest.php │ │ ├── Map/ │ │ │ ├── Group.php │ │ │ ├── Layer.php │ │ │ ├── Map.php │ │ │ └── Marker.php │ │ ├── Mention/ │ │ │ └── Mention.php │ │ ├── Note/ │ │ │ └── Note.php │ │ ├── Organisation/ │ │ │ ├── Member.php │ │ │ └── Organisation.php │ │ ├── Quest/ │ │ │ └── Quest.php │ │ ├── Race/ │ │ │ ├── Character.php │ │ │ └── Race.php │ │ ├── Tag/ │ │ │ ├── Entity.php │ │ │ ├── Post.php │ │ │ └── Tag.php │ │ └── Timeline/ │ │ ├── Era.php │ │ └── Timeline.php │ ├── Rules/ │ │ ├── AccountEmail.php │ │ ├── AccountName.php │ │ ├── ApiUniqueAttributeNames.php │ │ ├── CalendarFormat.php │ │ ├── CalendarMoonOffset.php │ │ ├── CampaignDelete.php │ │ ├── Confirm.php │ │ ├── EntityField.php │ │ ├── EntityFile.php │ │ ├── EntityLink.php │ │ ├── FontAwesomeIcon.php │ │ ├── GallerySize.php │ │ ├── GoodBye.php │ │ ├── Lessless.php │ │ ├── Location.php │ │ ├── Nested.php │ │ ├── Recaptcha.php │ │ ├── SocialLogin.php │ │ ├── UniqueAttributeNames.php │ │ └── Vanity.php │ ├── Sanitizers/ │ │ ├── CalendarSanitizer.php │ │ ├── MiscSanitizer.php │ │ └── SvgAllowedAttributes.php │ ├── Services/ │ │ ├── Abilities/ │ │ │ ├── AbilityService.php │ │ │ ├── BaseAbilityService.php │ │ │ ├── ChargeService.php │ │ │ ├── ImportService.php │ │ │ └── ReorderService.php │ │ ├── Account/ │ │ │ └── DeletionService.php │ │ ├── Api/ │ │ │ ├── ApiPermissionService.php │ │ │ ├── ApiService.php │ │ │ ├── BulkAttributeService.php │ │ │ ├── BulkEntityCreatorService.php │ │ │ ├── CampaignService.php │ │ │ ├── FilterService.php │ │ │ ├── KbService.php │ │ │ ├── ShowcaseService.php │ │ │ └── VoteService.php │ │ ├── AttributeMentionService.php │ │ ├── AttributeService.php │ │ ├── Attributes/ │ │ │ ├── ApiService.php │ │ │ ├── BaseAttributesService.php │ │ │ ├── RandomService.php │ │ │ └── TemplateService.php │ │ ├── Auth/ │ │ │ ├── LoginService.php │ │ │ └── SessionService.php │ │ ├── BookmarkService.php │ │ ├── Bookmarks/ │ │ │ ├── RandomEntityService.php │ │ │ └── RoutingService.php │ │ ├── Bragi/ │ │ │ ├── BragiService.php │ │ │ └── OpenAiService.php │ │ ├── BreadcrumbService.php │ │ ├── BulkService.php │ │ ├── Caches/ │ │ │ ├── AdCacheService.php │ │ │ ├── BaseCache.php │ │ │ ├── BookmarkCacheService.php │ │ │ ├── CampaignCacheService.php │ │ │ ├── CharacterCacheService.php │ │ │ ├── EntityAssetCacheService.php │ │ │ ├── EntityCacheService.php │ │ │ ├── MapMarkerCacheService.php │ │ │ ├── MarketplaceCacheService.php │ │ │ ├── QuestCacheService.php │ │ │ ├── ReleaseCacheService.php │ │ │ ├── SingleUserCacheService.php │ │ │ ├── TimelineElementCacheService.php │ │ │ ├── Traits/ │ │ │ │ ├── Campaign/ │ │ │ │ │ ├── ApplicationCache.php │ │ │ │ │ ├── DashboardCache.php │ │ │ │ │ ├── FlagCache.php │ │ │ │ │ ├── MemberCache.php │ │ │ │ │ ├── RoleCache.php │ │ │ │ │ ├── SettingCache.php │ │ │ │ │ ├── StyleCache.php │ │ │ │ │ ├── ThemeCache.php │ │ │ │ │ └── ThumbnailCache.php │ │ │ │ ├── PrimaryCache.php │ │ │ │ └── User/ │ │ │ │ ├── CampaignCache.php │ │ │ │ ├── RoleCache.php │ │ │ │ ├── TutorialCache.php │ │ │ │ └── UserFlagCache.php │ │ │ └── UserCacheService.php │ │ ├── CalendarService.php │ │ ├── Calendars/ │ │ │ ├── AdvancerService.php │ │ │ ├── DaysService.php │ │ │ ├── MoonService.php │ │ │ ├── ReminderService.php │ │ │ ├── SeasonService.php │ │ │ └── WeatherService.php │ │ ├── Campaign/ │ │ │ ├── AchievementService.php │ │ │ ├── ApplicationService.php │ │ │ ├── BoostService.php │ │ │ ├── Connections/ │ │ │ │ └── WebService.php │ │ │ ├── Counters/ │ │ │ │ └── VisibleEntityCountService.php │ │ │ ├── CreateService.php │ │ │ ├── DefaultImageService.php │ │ │ ├── DeletionService.php │ │ │ ├── ExportService.php │ │ │ ├── Exports/ │ │ │ │ └── QueueService.php │ │ │ ├── FollowService.php │ │ │ ├── Gallery/ │ │ │ │ └── BulkService.php │ │ │ ├── GenreService.php │ │ │ ├── Import/ │ │ │ │ ├── ImportIdMapper.php │ │ │ │ ├── ImportMentions.php │ │ │ │ ├── ImportService.php │ │ │ │ ├── Mappers/ │ │ │ │ │ ├── AbilityMapper.php │ │ │ │ │ ├── BaseEntityMapper.php │ │ │ │ │ ├── CalendarMapper.php │ │ │ │ │ ├── CampaignMapper.php │ │ │ │ │ ├── CharacterMapper.php │ │ │ │ │ ├── CreatureMapper.php │ │ │ │ │ ├── CustomEntityMapper.php │ │ │ │ │ ├── CustomMapper.php │ │ │ │ │ ├── EntityMapper.php │ │ │ │ │ ├── EventMapper.php │ │ │ │ │ ├── FamilyMapper.php │ │ │ │ │ ├── GalleryMapper.php │ │ │ │ │ ├── ImageMapper.php │ │ │ │ │ ├── ImportMapper.php │ │ │ │ │ ├── ItemMapper.php │ │ │ │ │ ├── JournalMapper.php │ │ │ │ │ ├── LocationMapper.php │ │ │ │ │ ├── MapMapper.php │ │ │ │ │ ├── MiscMapper.php │ │ │ │ │ ├── NoteMapper.php │ │ │ │ │ ├── OrganisationMapper.php │ │ │ │ │ ├── QuestMapper.php │ │ │ │ │ ├── RaceMapper.php │ │ │ │ │ ├── TagMapper.php │ │ │ │ │ └── TimelineMapper.php │ │ │ │ └── PrepareService.php │ │ │ ├── LeaveService.php │ │ │ ├── LocalisationService.php │ │ │ ├── MemberService.php │ │ │ ├── ModuleEditService.php │ │ │ ├── ModuleService.php │ │ │ ├── NotificationService.php │ │ │ ├── Notifications/ │ │ │ │ ├── HideService.php │ │ │ │ └── ImageRemoveService.php │ │ │ ├── PluginService.php │ │ │ ├── PurgeService.php │ │ │ ├── SearchCleanupService.php │ │ │ ├── ShareService.php │ │ │ ├── Sidebar/ │ │ │ │ ├── SaveService.php │ │ │ │ └── SetupService.php │ │ │ ├── StatService.php │ │ │ ├── SystemService.php │ │ │ ├── ThemeBuilderService.php │ │ │ └── Webhooks/ │ │ │ └── SaveService.php │ │ ├── ColourService.php │ │ ├── CommunityVoteService.php │ │ ├── CountryService.php │ │ ├── CsvImportService.php │ │ ├── CsvValidatorService.php │ │ ├── DashboardService.php │ │ ├── Dashboards/ │ │ │ └── GettingStartedService.php │ │ ├── DiceRollerService.php │ │ ├── Discord/ │ │ │ └── NotificationService.php │ │ ├── DiscordService.php │ │ ├── DomainService.php │ │ ├── Entity/ │ │ │ ├── AliasService.php │ │ │ ├── ArchiveService.php │ │ │ ├── ColumnDefinitionService.php │ │ │ ├── Connections/ │ │ │ │ ├── MapService.php │ │ │ │ └── RelatedService.php │ │ │ ├── CopyService.php │ │ │ ├── EntitySaveService.php │ │ │ ├── ExportService.php │ │ │ ├── InventoryService.php │ │ │ ├── LoggerService.php │ │ │ ├── MarkdownExportService.php │ │ │ ├── MoveService.php │ │ │ ├── NewService.php │ │ │ ├── PopularService.php │ │ │ ├── PostLoggerService.php │ │ │ ├── PostService.php │ │ │ ├── PreviewService.php │ │ │ ├── PrivacyService.php │ │ │ ├── PurgeService.php │ │ │ ├── RecoveryService.php │ │ │ ├── RecoverySetupService.php │ │ │ ├── RelationService.php │ │ │ ├── Relations/ │ │ │ │ ├── CharacterRelationsService.php │ │ │ │ ├── Concerns/ │ │ │ │ │ ├── SavesLocations.php │ │ │ │ │ └── SupportsPatchMode.php │ │ │ │ ├── CreatureRelationsService.php │ │ │ │ ├── EntityRelationsServiceFactory.php │ │ │ │ ├── EventRelationsService.php │ │ │ │ ├── FamilyRelationsService.php │ │ │ │ ├── ItemRelationsService.php │ │ │ │ ├── LocationRelationsService.php │ │ │ │ ├── OrganisationRelationsService.php │ │ │ │ ├── RaceRelationsService.php │ │ │ │ └── RelationsServiceInterface.php │ │ │ ├── RemindableService.php │ │ │ ├── ShareService.php │ │ │ ├── StoryService.php │ │ │ ├── TagService.php │ │ │ ├── TemplateService.php │ │ │ ├── TooltipService.php │ │ │ └── TransformService.php │ │ ├── EntityFileService.php │ │ ├── EntityMappingService.php │ │ ├── EntityTypeService.php │ │ ├── Families/ │ │ │ └── FamilyTreeService.php │ │ ├── FilterService.php │ │ ├── FormCopyService.php │ │ ├── Gallery/ │ │ │ ├── BrowseService.php │ │ │ ├── CreateService.php │ │ │ ├── DeleteService.php │ │ │ ├── SelectionService.php │ │ │ ├── SetupService.php │ │ │ ├── StorageService.php │ │ │ ├── SummernoteService.php │ │ │ ├── TiptapService.php │ │ │ ├── UpdateService.php │ │ │ └── UploadService.php │ │ ├── GenreService.php │ │ ├── IdentityManager.php │ │ ├── Images/ │ │ │ └── AvatarService.php │ │ ├── ImagesService.php │ │ ├── ImgService.php │ │ ├── InviteService.php │ │ ├── LanguageService.php │ │ ├── Layout/ │ │ │ └── NavigationService.php │ │ ├── LengthValidatorService.php │ │ ├── LimitService.php │ │ ├── Logs/ │ │ │ └── ApiLogService.php │ │ ├── Maps/ │ │ │ ├── ChunkingService.php │ │ │ └── MigrateLayerService.php │ │ ├── MarkdownMentionsService.php │ │ ├── Mentions/ │ │ │ └── SaveService.php │ │ ├── MentionsService.php │ │ ├── MultiEditingService.php │ │ ├── NewsletterService.php │ │ ├── Onboarding/ │ │ │ └── InitialService.php │ │ ├── PaginationService.php │ │ ├── PatreonService.php │ │ ├── PayPalService.php │ │ ├── PermissionService.php │ │ ├── Permissions/ │ │ │ ├── BulkPermissionService.php │ │ │ ├── EntityPermission.php │ │ │ ├── PermissionService.php │ │ │ ├── RolePermission.php │ │ │ └── RolePermissionService.php │ │ ├── Plugins/ │ │ │ └── ImporterService.php │ │ ├── Posts/ │ │ │ ├── Permissions/ │ │ │ │ └── SavePermissionsService.php │ │ │ ├── PurgeService.php │ │ │ └── RecoveryService.php │ │ ├── QuickCreator/ │ │ │ └── ProcessService.php │ │ ├── Referrals/ │ │ │ ├── JoinService.php │ │ │ └── ManagementService.php │ │ ├── Report/ │ │ │ ├── AccountsReportService.php │ │ │ ├── BaseReportService.php │ │ │ ├── ChurnReportService.php │ │ │ ├── OnboardingReportService.php │ │ │ └── WeeklyReportService.php │ │ ├── Search/ │ │ │ ├── AttributeSearchService.php │ │ │ ├── CampaignSearchService.php │ │ │ ├── EntitySearchService.php │ │ │ ├── LiveSearchService.php │ │ │ ├── MapGroupSearchService.php │ │ │ ├── MentionService.php │ │ │ ├── RecentService.php │ │ │ └── TemplateSearchService.php │ │ ├── SearchService.php │ │ ├── Spotlights/ │ │ │ └── ApplyService.php │ │ ├── StarterService.php │ │ ├── Submenus/ │ │ │ ├── AbilitySubmenu.php │ │ │ ├── BaseSubmenu.php │ │ │ ├── CalendarSubmenu.php │ │ │ ├── CharacterSubmenu.php │ │ │ ├── CreatureSubmenu.php │ │ │ ├── CustomSubmenu.php │ │ │ ├── EntitySubmenu.php │ │ │ ├── EventSubmenu.php │ │ │ ├── FamilySubmenu.php │ │ │ ├── ItemSubmenu.php │ │ │ ├── JournalSubmenu.php │ │ │ ├── LocationSubmenu.php │ │ │ ├── MapSubmenu.php │ │ │ ├── NoteSubmenu.php │ │ │ ├── OrganisationSubmenu.php │ │ │ ├── QuestSubmenu.php │ │ │ ├── RaceSubmenu.php │ │ │ ├── SubmenuService.php │ │ │ ├── TagSubmenu.php │ │ │ └── TimelineSubmenu.php │ │ ├── Subscribers/ │ │ │ └── HallOfFameService.php │ │ ├── Subscription/ │ │ │ ├── CancellationService.php │ │ │ ├── CouponService.php │ │ │ ├── FreeTrialEndService.php │ │ │ ├── PayPalRenewalService.php │ │ │ ├── PaymentMethodService.php │ │ │ ├── SubscriptionEndService.php │ │ │ └── TrialService.php │ │ ├── SubscriptionService.php │ │ ├── SubscriptionUpgradeService.php │ │ ├── TOC/ │ │ │ └── TocSlugify.php │ │ ├── TagService.php │ │ ├── TimelineService.php │ │ ├── Tracking/ │ │ │ └── DatalayerService.php │ │ ├── TroubleshootingService.php │ │ ├── TutorialService.php │ │ ├── UserAuthenticatedService.php │ │ ├── Users/ │ │ │ ├── CampaignService.php │ │ │ ├── CleanupService.php │ │ │ ├── CurrencyService.php │ │ │ ├── EmailValidationService.php │ │ │ ├── OfferTrialService.php │ │ │ ├── PurgeService.php │ │ │ └── UserLogService.php │ │ ├── WebhookService.php │ │ └── Whiteboards/ │ │ ├── ApiService.php │ │ └── Shapes/ │ │ └── PersistanceService.php │ ├── Support/ │ │ └── HtmlPurifier/ │ │ └── CalcStyleDefinition.php │ ├── Traits/ │ │ ├── AdminPolicyTrait.php │ │ ├── ApiRequest.php │ │ ├── BulkControllerTrait.php │ │ ├── CalendarAware.php │ │ ├── CampaignAware.php │ │ ├── Controllers/ │ │ │ ├── HasDatagrid.php │ │ │ ├── HasNested.php │ │ │ └── HasSubview.php │ │ ├── CreatesEntityFromName.php │ │ ├── EntityAware.php │ │ ├── EntityTypeAware.php │ │ ├── ExportableTrait.php │ │ ├── GuestAuthTrait.php │ │ ├── HasJobLog.php │ │ ├── MentionTrait.php │ │ ├── OrderableTrait.php │ │ ├── PostAware.php │ │ ├── RequestAware.php │ │ ├── ResolvesNewForeignEntities.php │ │ ├── RoleAware.php │ │ ├── Search/ │ │ │ └── Orderable.php │ │ └── UserAware.php │ └── View/ │ └── Components/ │ ├── Ad.php │ ├── Ads/ │ │ └── Native.php │ ├── Alert.php │ ├── Badge.php │ ├── Box/ │ │ └── Footer.php │ ├── Box.php │ ├── Button/ │ │ └── DeleteConfirm.php │ ├── Buttons/ │ │ ├── Colours.php │ │ ├── Confirm.php │ │ └── ConfirmDelete.php │ ├── Campaigns/ │ │ └── ModuleBox.php │ ├── CharacterSheet.php │ ├── Checkbox.php │ ├── Dashboards/ │ │ └── Widgets/ │ │ └── Selection.php │ ├── Date.php │ ├── Dialog/ │ │ ├── Article.php │ │ ├── Close.php │ │ ├── Footer.php │ │ └── Header.php │ ├── Dialog.php │ ├── Dropdowns/ │ │ ├── Divider.php │ │ ├── Item.php │ │ └── Section.php │ ├── Entities/ │ │ ├── Submenu.php │ │ └── Thumbnail.php │ ├── EntityLink.php │ ├── FaqElement.php │ ├── Form.php │ ├── Forms/ │ │ ├── Field.php │ │ ├── Foreign.php │ │ ├── Select.php │ │ ├── Tags.php │ │ ├── VisibilityPicker.php │ │ └── VisibilityPickerField.php │ ├── Grid.php │ ├── Helper.php │ ├── Helpers/ │ │ └── Tooltip.php │ ├── Hero.php │ ├── Icon.php │ ├── InfoBox.php │ ├── LearnMore.php │ ├── Lists/ │ │ └── EmptyState.php │ ├── Menu/ │ │ └── Element.php │ ├── Menu.php │ ├── Posts/ │ │ └── Tags.php │ ├── PremiumCta.php │ ├── PremiumCtaFooter.php │ ├── PremiumDialog.php │ ├── Profile/ │ │ └── SocialLink.php │ ├── Reorder/ │ │ └── Child.php │ ├── Sidebar/ │ │ ├── Account.php │ │ ├── Bookmark.php │ │ ├── Campaign.php │ │ ├── Element.php │ │ ├── Profile.php │ │ ├── Section.php │ │ └── Settings.php │ ├── Since.php │ ├── Tab/ │ │ ├── Nav.php │ │ └── Tab.php │ ├── Tags/ │ │ └── Bubble.php │ ├── Toggles/ │ │ └── FilterButton.php │ ├── Tutorial.php │ ├── Users/ │ │ ├── Avatar.php │ │ └── Link.php │ ├── Widgets/ │ │ ├── FilteredLink.php │ │ ├── Forms/ │ │ │ └── Advanced.php │ │ └── Previews/ │ │ ├── Body.php │ │ └── Head.php │ └── WordCount.php ├── artisan ├── boost.json ├── bootstrap/ │ ├── app.php │ └── cache/ │ └── .gitignore ├── composer.json ├── config/ │ ├── ads.php │ ├── app.php │ ├── attribute-templates.php │ ├── auth.php │ ├── backup.php │ ├── billing.php │ ├── blameable.php │ ├── bragi.php │ ├── broadcasting.php │ ├── cache.php │ ├── cdn.php │ ├── colours.php │ ├── cors.php │ ├── database.php │ ├── debugbar.php │ ├── discord.php │ ├── domains.php │ ├── dompdf.php │ ├── entities.php │ ├── filesystems.php │ ├── fontawesome.php │ ├── front.php │ ├── google2fa.php │ ├── ignition.php │ ├── image.php │ ├── imports.php │ ├── laravel-translation-manager.php │ ├── laravellocalization.php │ ├── larecipe.php │ ├── limits.php │ ├── livewire.php │ ├── logging.php │ ├── mail.php │ ├── mailerlite.php │ ├── marketplace.php │ ├── openai.php │ ├── passport.php │ ├── paypal.php │ ├── purge.php │ ├── purify.php │ ├── queue.php │ ├── reverb.php │ ├── scout.php │ ├── sentry.php │ ├── services.php │ ├── session.php │ ├── subscription.php │ ├── thumbor.php │ ├── tracking.php │ ├── trustedproxy.php │ └── view.php ├── database/ │ ├── .gitignore │ ├── factories/ │ │ ├── AbilityFactory.php │ │ ├── AttributeFactory.php │ │ ├── BookmarkFactory.php │ │ ├── CalendarFactory.php │ │ ├── CampaignDashboardWidgetFactory.php │ │ ├── CampaignFactory.php │ │ ├── CampaignStyleFactory.php │ │ ├── CharacterFactory.php │ │ ├── ConversationFactory.php │ │ ├── ConversationMessageFactory.php │ │ ├── ConversationParticipantFactory.php │ │ ├── CreatureFactory.php │ │ ├── DiceRollFactory.php │ │ ├── EntityAbilityFactory.php │ │ ├── EntityAssetFactory.php │ │ ├── EntityTagFactory.php │ │ ├── EventFactory.php │ │ ├── FamilyFactory.php │ │ ├── ImageFactory.php │ │ ├── ItemFactory.php │ │ ├── JournalFactory.php │ │ ├── LocationFactory.php │ │ ├── MapFactory.php │ │ ├── MapGroupFactory.php │ │ ├── MapLayerFactory.php │ │ ├── MapMarkerFactory.php │ │ ├── NoteFactory.php │ │ ├── OrganisationFactory.php │ │ ├── PostFactory.php │ │ ├── PostTagFactory.php │ │ ├── QuestElementFactory.php │ │ ├── QuestFactory.php │ │ ├── RaceFactory.php │ │ ├── RelationFactory.php │ │ ├── ReminderFactory.php │ │ ├── TagFactory.php │ │ ├── TimelineElementFactory.php │ │ ├── TimelineEraFactory.php │ │ ├── TimelineFactory.php │ │ └── UserFactory.php │ ├── migrations/ │ │ ├── .gitkeep │ │ ├── 2014_04_02_193005_create_ltm_translations_table.php │ │ ├── 2014_10_12_000000_create_users_table.php │ │ ├── 2014_10_12_100000_create_password_resets_table.php │ │ ├── 2016_01_01_000000_add_voyager_user_fields.php │ │ ├── 2016_04_11_00352701_create_user_locales_table.php │ │ ├── 2016_06_01_000001_create_oauth_auth_codes_table.php │ │ ├── 2016_06_01_000002_create_oauth_access_tokens_table.php │ │ ├── 2016_06_01_000003_create_oauth_refresh_tokens_table.php │ │ ├── 2016_06_01_000004_create_oauth_clients_table.php │ │ ├── 2016_06_01_000005_create_oauth_personal_access_clients_table.php │ │ ├── 2016_10_21_190000_create_roles_table.php │ │ ├── 2017_10_27_090105_create_campaign.php │ │ ├── 2017_10_27_091125_create_characters.php │ │ ├── 2017_10_27_091755_create_families.php │ │ ├── 2017_10_27_102246_create_locations.php │ │ ├── 2017_10_28_091521_update_character_with_location.php │ │ ├── 2017_10_30_010000_create_real_visibilities_table.php │ │ ├── 2017_10_30_010002_create_real_entities_table.php │ │ ├── 2017_10_30_160256_create_journal_table.php │ │ ├── 2017_10_30_160311_create_item_table.php │ │ ├── 2017_10_30_162322_create_family_relations.php │ │ ├── 2017_10_30_164537_add_character_family.php │ │ ├── 2017_10_31_124138_update_user_and_campaign_link.php │ │ ├── 2017_11_01_222903_create_organisation.php │ │ ├── 2017_11_03_181958_create_notes.php │ │ ├── 2017_11_12_195702_create_invite_tokens.php │ │ ├── 2017_11_16_145219_create_events.php │ │ ├── 2017_11_16_222319_create_campaign_settings.php │ │ ├── 2017_11_22_111255_create_quests.php │ │ ├── 2017_11_30_113216_create_relations_table.php │ │ ├── 2018_01_25_112528_create_attributes_table.php │ │ ├── 2018_02_14_102646_create_attribute_template.php │ │ ├── 2018_03_02_163640_create_new_acl.php │ │ ├── 2018_03_14_152413_create_notifications_table.php │ │ ├── 2018_04_09_17054701_add_ui_settings_to_ltm_user_locales.php │ │ ├── 2018_04_16_090159_create_calendar_table.php │ │ ├── 2018_04_24_075544_create_entity_notes_table.php │ │ ├── 2018_04_24_124131_create_character_traits_table.php │ │ ├── 2018_04_24_193803_create_sections_table.php │ │ ├── 2018_04_30_174331_create_entity_events.php │ │ ├── 2018_05_19_091532_add_dice_rolls.php │ │ ├── 2018_05_25_102446_update_campaign_invites.php │ │ ├── 2018_05_25_113848_create_dice_roll_results.php │ │ ├── 2018_05_31_121110_create_custom_menu_table.php │ │ ├── 2018_07_17_131457_create_jobs_table.php │ │ ├── 2018_08_15_083901_create_failed_jobs_table.php │ │ ├── 2018_08_20_174638_create_conversations.php │ │ ├── 2018_09_19_121625_add_calendar_date_to_quest_and_journal.php │ │ ├── 2018_09_25_134530_create_race.php │ │ ├── 2018_10_17_130533_create_entity_categories.php │ │ ├── 2018_10_23_124704_create_entity_files.php │ │ ├── 2018_11_28_125839_add_campaign_dashboard_calendar.php │ │ ├── 2018_12_06_222045_add_campaign_permission_entity_id.php │ │ ├── 2019_01_24_182847_create_entity_mentions.php │ │ ├── 2019_02_22_083247_create_entity_log.php │ │ ├── 2019_04_11_134145_create_entity_inventory.php │ │ ├── 2019_05_03_000001_create_customer_columns.php │ │ ├── 2019_05_03_000002_create_subscriptions_table.php │ │ ├── 2019_05_03_000003_create_subscription_items_table.php │ │ ├── 2019_05_10_072500_create_entities.php │ │ ├── 2019_05_23_130252_update_attribute_templates_add_entity_type_id.php │ │ ├── 2019_08_15_152154_create_campaign_follow.php │ │ ├── 2019_10_02_131224_create_campaign_boosts.php │ │ ├── 2019_10_02_191220_custom_patreon.php │ │ ├── 2020_01_20_084615_create_calendar_weather.php │ │ ├── 2020_03_05_174449_create_abilities_table.php │ │ ├── 2020_03_05_221303_create_entity_abilities.php │ │ ├── 2020_03_25_192753_add_soft_deletes.php │ │ ├── 2020_04_10_121227_create_discord.php │ │ ├── 2020_04_29_175303_subscription_bills.php │ │ ├── 2020_05_08_065550_create_images.php │ │ ├── 2020_05_10_122725_update_dashboard_widgets_add_tags.php │ │ ├── 2020_06_02_103227_create_sessions_table.php │ │ ├── 2020_06_06_084917_create_maps_table.php │ │ ├── 2020_07_24_160310_add_map_groups.php │ │ ├── 2020_08_02_125607_create_app_updates_table.php │ │ ├── 2020_08_03_155441_create_timelines_table.php │ │ ├── 2020_08_04_095517_create_timeline_elements.php │ │ ├── 2020_08_10_172320_update_entity_events_add_type.php │ │ ├── 2020_09_10_140424_add_entity_image_id.php │ │ ├── 2020_09_22_115919_create_referral_table.php │ │ ├── 2020_11_07_083605_create_campaign_dashboards.php │ │ ├── 2020_11_07_095122_update_campaign_widgets_add_dashboard_id.php │ │ ├── 2020_12_12_191426_create_entity_note_permissions.php │ │ ├── 2021_01_03_231138_create_table_entity_links.php │ │ ├── 2021_01_18_184615_create_campaign_gallery_folders.php │ │ ├── 2021_01_29_003755_update_menu_links_dashboard_id.php │ │ ├── 2021_01_30_233554_create_campaign_submissions.php │ │ ├── 2021_04_07_230722_update_entities_add_marketplace_entity_uuid.php │ │ ├── 2021_04_11_202656_update_relations_add_marketplace_uuid.php │ │ ├── 2021_04_20_201015_create_quest_elements_table.php │ │ ├── 2021_05_25_125309_update_maps_center_marker.php │ │ ├── 2021_07_19_095244_update_entity_notes_marketplace_uuid.php │ │ ├── 2021_09_24_175239_create_entity_user_table.php │ │ ├── 2021_09_27_173618_create_campaign_styles_table.php │ │ ├── 2021_10_19_151149_create_menu_link_tags_table.php │ │ ├── 2021_11_19_031558_create_user_role_table.php │ │ ├── 2021_11_19_034012_update_entities_add_type_id.php │ │ ├── 2022_01_02_212212_add_character_race_table.php │ │ ├── 2022_01_23_023952_create_entity_aliases_table.php │ │ ├── 2022_03_07_224142_create_character_families_table.php │ │ ├── 2022_04_27_194610_update_campaign_permissions_perf.php │ │ ├── 2022_05_06_151813_update_users_add_card_expiration.php │ │ ├── 2022_06_07_172445_update_maps_add_clustering_toggle.php │ │ ├── 2022_06_23_154301_create_entity_assets_table.php │ │ ├── 2022_08_23_005328_add_race_location_table.php │ │ ├── 2022_09_02_191341_create_password_securities_table.php │ │ ├── 2022_09_21_231900_refactor_user_patreon.php │ │ ├── 2022_10_20_192238_create_creatures_table.php │ │ ├── 2022_11_01_214611_update_entity_user_add_campaign_id_post_id_timeline_element_id_quest_element_id.php │ │ ├── 2022_11_07_192125_update_entity_mentions_add_quest_element_id_timeline_element_id.php │ │ ├── 2022_11_08_161937_create_presets_table.php │ │ ├── 2022_12_08_155837_rename_entity_note_id_to_post_id.php │ │ ├── 2023_01_04_213154_create_bragi_logs_table.php │ │ ├── 2023_01_16_021352_create_family_tree_table.php │ │ ├── 2023_01_19_154910_cleanup_user_date_format.php │ │ ├── 2023_02_08_003255_update_entity_logs_add_post_id.php │ │ ├── 2023_03_14_152925_update_subscriptions_rename_stripe_plan.php │ │ ├── 2023_03_14_153209_update_subscription_items_rename_stripe_plan.php │ │ ├── 2023_03_14_154115_update_users_rename_card_brand_card_last_four.php │ │ ├── 2023_05_04_185755_update_gallery_woff2.php │ │ ├── 2023_05_17_191929_update_images_add_focus_x_focus_y.php │ │ ├── 2023_06_02_175012_create_image_mentions_table.php │ │ ├── 2023_06_09_215007_update_campaign_style_add_theme.php │ │ ├── 2023_06_10_220139_create_api_logs.php │ │ ├── 2023_06_15_210220_create_user_logs_table.php │ │ ├── 2023_06_21_221002_update_attributes_rename_is_star.php │ │ ├── 2023_06_21_221208_update_relations_rename_is_star.php │ │ ├── 2023_06_27_194149_create_genres_table.php │ │ ├── 2023_06_27_195226_create_campaign_genre_table.php │ │ ├── 2023_06_29_185027_create_user_flags_table.php │ │ ├── 2023_07_13_164526_create_post_layouts_table.php │ │ ├── 2023_07_13_172639_update_entity_notes_add_layout_id.php │ │ ├── 2023_07_28_181821_update_calendars_add_format.php │ │ ├── 2023_08_11_012819_reset_campaign_slug.php │ │ ├── 2023_08_14_225219_add_new_slug.php │ │ ├── 2023_08_16_170220_remove_campaign_export_path.php │ │ ├── 2023_08_21_233952_create_tutorials_table.php │ │ ├── 2023_08_30_170905_migrate_to_bookmarks.php │ │ ├── 2023_09_12_200523_migrate_to_posts.php │ │ ├── 2023_10_15_183420_add_image_to_entities.php │ │ ├── 2023_10_16_202303_update_locations_rename_parent_location_id_location_id.php │ │ ├── 2023_10_21_172645_update_entity_type_bookmark.php │ │ ├── 2023_10_25_173253_create_campaign_exports_table.php │ │ ├── 2023_10_28_210131_add_is_deleted_index.php │ │ ├── 2023_11_05_174423_create_campaign_import_table.php │ │ ├── 2023_11_07_034812_rollback_entities_deleted_index.php │ │ ├── 2023_11_19_121322_update_campaign_exports_add_progress.php │ │ ├── 2023_11_21_215234_update_calendars_add_show_birthdays.php │ │ ├── 2023_11_28_121013_cleanup_entity_images.php │ │ ├── 2023_11_28_215313_update_map_markers_add_is_popupless.php │ │ ├── 2023_12_02_154727_remove_old_trees.php │ │ ├── 2023_12_05_125348_create_tiers_table.php │ │ ├── 2024_01_08_144309_create_features_table.php │ │ ├── 2024_01_10_191244_create_game_systems_table.php │ │ ├── 2024_01_10_191740_create_campaign_system_table.php │ │ ├── 2024_01_11_150113_update_attributes.php │ │ ├── 2024_01_19_024046_cleanup_reminders.php │ │ ├── 2024_01_22_203110_create_user_validations_table.php │ │ ├── 2024_01_25_192113_update_creatures_add_is_extinct.php │ │ ├── 2024_01_26_194006_update_campaigns_add_is_discreet.php │ │ ├── 2024_02_06_162941_create_feature_files.php │ │ ├── 2024_02_27_095646_update_features_add_original.php │ │ ├── 2024_03_07_010249_update_features_add_rejection.php │ │ ├── 2024_03_27_173140_create_webhooks.php │ │ ├── 2024_04_03_224729_create_webhook_tags_table.php │ │ ├── 2024_04_15_220412_create_organisation_location_table.php │ │ ├── 2024_04_23_062512_update_subscriptions_change_name_type.php │ │ ├── 2024_04_24_193659_update_campaign_settings_add_assets.php │ │ ├── 2024_05_02_162659_update_inventories_add_image_uuid.php │ │ ├── 2024_05_28_202511_create_tier_pricing_table.php │ │ ├── 2024_06_01_000001_create_oauth_device_codes_table.php │ │ ├── 2024_06_04_202056_update_posts_add_deleted_at_deleted_by.php │ │ ├── 2024_06_14_201056_update_campaigns_add_deleted_by_deleted_at.php │ │ ├── 2024_06_22_004252_update_character_race_add_is_private.php │ │ ├── 2024_07_02_172619_update_posts_add_is_template.php │ │ ├── 2024_07_08_051702_update_webhooks_add_settings.php │ │ ├── 2024_07_09_062122_update_character_family_add_is_private.php │ │ ├── 2024_07_25_205325_update_map_layers_add_image_uuid.php │ │ ├── 2024_07_26_160208_update_entity_assets_add_image_uuid.php │ │ ├── 2024_07_31_215400_remove_unused_slug.php │ │ ├── 2024_08_12_231117_update_locations_add_is_destroyed.php │ │ ├── 2024_08_13_202759_update_creatures_add_is_dead.php │ │ ├── 2024_08_14_145655_update_races_add_is_extinct.php │ │ ├── 2024_08_14_164041_update_families_add_is_extinct.php │ │ ├── 2024_08_27_175447_update_notifications_migrate_user_model.php │ │ ├── 2025_01_09_180214_update_objects_add_weight.php │ │ ├── 2025_01_10_175606_update_quests_add_location_id.php │ │ ├── 2025_01_11_022946_update_modules_add_campaign_id.php │ │ ├── 2025_01_13_064804_create_post_tag_table.php │ │ ├── 2025_01_13_230814_update_entities_add_boilerplate.php │ │ ├── 2025_01_14_144924_update_bookmarks_add_entity_type_id.php │ │ ├── 2025_01_15_160953_migrate_entry_to_entities.php │ │ ├── 2025_01_16_164318_add_dashboard_entity_type_id.php │ │ ├── 2025_01_16_175851_migrate_widgets_to_entity_types.php │ │ ├── 2025_01_17_161652_add_parent_to_entities.php │ │ ├── 2025_01_27_142523_add_word_count.php │ │ ├── 2025_02_21_204219_update_module_icon.php │ │ ├── 2025_03_18_055651_update_features_add_message_id.php │ │ ├── 2025_03_21_150239_rename_entity_events_to_reminders.php │ │ ├── 2025_03_21_150723_update_entity_events_add_polymorphism.php │ │ ├── 2025_03_21_151008_fill_entity_events.php │ │ ├── 2025_03_21_153447_update_reminders_nullify_entity_id.php │ │ ├── 2025_04_10_064831_update_attribute_templates_add_is_enabled.php │ │ ├── 2025_04_21_170958_update_user_logs_add_campaign_id.php │ │ ├── 2025_05_29_015926_update_bookmarks_add_created_by_updated_by.php │ │ ├── 2025_05_29_161824_update_campaign_dashboard_widgets_add_created_by_updated_by.php │ │ ├── 2025_05_29_162746_update_attributes_add_created_by_updated_by.php │ │ ├── 2025_06_06_053052_update_reminders_remove_entity_id.php │ │ ├── 2025_06_09_161939_cleanup_old_entry_and_type.php │ │ ├── 2025_06_09_162836_cleanup_old_fields.php │ │ ├── 2025_06_09_181415_rename_campaign_submissions_to_applications.php │ │ ├── 2025_06_09_182950_cleanup_old_logs_tables.php │ │ ├── 2025_06_16_145726_add_api_log_duration.php │ │ ├── 2025_06_16_211604_drop_oauth_personal_access_clients.php │ │ ├── 2025_06_24_124233_update_entity_logs_add_polymorphism.php │ │ ├── 2025_06_24_124354_migrate_entity_logs.php │ │ ├── 2025_06_24_124500_cleanup_entity_logs.php │ │ ├── 2025_06_25_161814_create_campaign_flags_table.php │ │ ├── 2025_07_03_215618_update_objects_add_creator_id.php │ │ ├── 2025_07_03_222904_update_objects_migrate_character_id_to_creator_id.php │ │ ├── 2025_08_14_185936_update_posts_remove_is_private.php │ │ ├── 2025_09_04_194330_update_campaign_flags_add_value.php │ │ ├── 2025_09_12_160608_create_whiteboards_table.php │ │ ├── 2025_09_17_034429_update_user_flags_add_amount.php │ │ ├── 2025_09_22_230759_update_campaign_imports_add_logs_errors.php │ │ ├── 2025_09_29_173336_update_map_markers_add_css.php │ │ ├── 2025_09_29_204049_update_entities_add_archived_at.php │ │ ├── 2025_10_01_200028_update_map_groups_add_parent_id.php │ │ ├── 2025_10_02_170514_update_campaign_settings_add_whiteboards.php │ │ ├── 2025_11_04_205450_create_entity_locations2_table.php │ │ ├── 2025_11_06_154720_update_entity_assets_add_updated_by.php │ │ ├── 2025_11_19_155526_migrate_campaigns_discreet.php │ │ ├── 2025_11_19_160105_remove_campaigns_is_discreet.php │ │ ├── 2025_12_15_191556_add_dashboard_widget_index.php │ │ ├── 2025_12_22_212249_migrate_character_locations_to_entity_locations.php │ │ ├── 2026_01_14_161511_cleanup_old_referrals.php │ │ ├── 2026_01_14_170634_create_referral_codes_table.php │ │ ├── 2026_01_14_174144_create_referral_events_table.php │ │ ├── 2026_01_14_174215_update_users_referred_by.php │ │ ├── 2026_01_15_224615_create_whiteboard_shapes_table.php │ │ ├── 2026_01_15_232603_create_whiteboard_strokes_table.php │ │ ├── 2026_01_23_204425_create_spotlights_table.php │ │ ├── 2026_01_23_205038_cleanup_old_spotlights.php │ │ ├── 2026_01_23_211003_create_spotlight_survey_table.php │ │ ├── 2026_01_30_100000_rename_description_to_entry_in_quest_elements_table.php │ │ ├── 2026_02_03_221238_create_playstyles_table.php │ │ ├── 2026_02_04_170050_migrate_organisation_locations_to_entity_locations.php │ │ ├── 2026_02_04_170051_migrate_creature_locations_to_entity_locations.php │ │ ├── 2026_02_04_170052_migrate_race_locations_to_entity_locations.php │ │ ├── 2026_02_04_213616_create_campaign_filters_table.php │ │ ├── 2026_02_05_074106_create_campaign_playstyle_table.php │ │ ├── 2026_02_06_185348_update_entities_force_name.php │ │ ├── 2026_02_06_190751_add_entity_id_index_to_entities.php │ │ ├── 2026_02_06_190754_add_composite_index_to_entity_tags.php │ │ ├── 2026_02_06_190757_add_deleted_at_index_to_soft_delete_tables.php │ │ ├── 2026_02_07_072211_update_applications_add_new_fields.php │ │ ├── 2026_02_11_162437_add_alias_config.php │ │ ├── 2026_02_16_155432_create_campaign_events_table.php │ │ ├── 2026_02_16_215608_update_entities_add_source.php │ │ ├── 2026_02_16_232044_fix_users_referred_by_foreign_key.php │ │ ├── 2026_02_23_193432_add_prioritised_to_campaigns.php │ │ ├── 2026_03_03_225300_update_characters_is_dead_to_tinyinteger.php │ │ ├── 2026_03_04_044125_update_quests_is_completed_to_tinyinteger.php │ │ ├── 2026_03_05_184417_migrate_event_locations_to_entity_locations.php │ │ ├── 2026_03_05_214251_update_characters_pinned_defaults.php │ │ ├── 2026_03_06_140442_rename_characters_is_dead_to_status.php │ │ ├── 2026_03_06_140443_rename_quests_is_completed_to_status.php │ │ ├── 2026_03_09_224121_add_copy_entity_entry_to_quest_elements_table.php │ │ ├── 2026_03_11_224335_add_icon_to_tags_table.php │ │ ├── 2026_03_12_172704_add_title_to_locations_table.php │ │ ├── 2026_03_16_170743_update_cancellations_add_secondary.php │ │ ├── 2026_03_16_211952_create_entity_listing_preferences_table.php │ │ ├── 2026_03_17_000001_migrate_parent_ids_to_entities.php │ │ ├── 2026_03_17_000002_drop_parent_columns_from_child_tables.php │ │ ├── 2026_03_17_092044_create_item_creator_table.php │ │ ├── 2026_03_18_152531_add_per_page_to_entity_listing_preferences_table.php │ │ ├── 2026_03_23_193613_convert_tag_colours_to_hex.php │ │ ├── 2026_03_26_000001_create_category_statuses_table.php │ │ ├── 2026_03_26_000002_add_status_id_to_entities_table.php │ │ ├── 2026_04_03_164253_update_features_add_meta.php │ │ ├── 2026_04_03_215445_create_campaign_descriptions_table.php │ │ ├── 2026_05_08_181031_drop_old_status_columns.php │ │ ├── 2026_05_08_181951_drop_audit_columns_from_creatures_races_whiteboards.php │ │ ├── 2026_05_08_183610_drop_system_and_is_discreet_from_campaigns.php │ │ ├── 2026_05_08_185251_drop_follower_from_campaigns.php │ │ └── 2026_05_08_190847_drop_export_date_from_campaigns.php │ └── seeders/ │ ├── CategoryStatusSeeder.php │ ├── DatabaseSeeder.php │ ├── EntityEventTypeSeeder.php │ ├── EntityTypesTableSeeder.php │ ├── FeatureCategorySeeder.php │ ├── FeatureStatusSeeder.php │ ├── GameSystemSeeder.php │ ├── GenreTableSeeder.php │ ├── PlaystyleSeeder.php │ ├── PostLayoutTableSeeder.php │ ├── PresetTypeTableSeeder.php │ ├── RolesTableSeeder.php │ ├── ThemesTableSeeder.php │ ├── TierPricingSeeder.php │ ├── TierSeeder.php │ └── VisibilitiesTableSeeder.php ├── docker/ │ └── mysql/ │ └── create-testing-database.sh ├── docker-compose.yml ├── docs/ │ ├── api/ │ │ └── readme.md │ ├── assets.md │ ├── contributing.md │ ├── debugging.md │ ├── meilisearch.md │ ├── running.md │ ├── specs/ │ │ └── 2026-05-07-family-tree-cytoscape-redesign.md │ ├── translating.md │ ├── updating.md │ └── websockets.md ├── lang/ │ ├── base/ │ │ ├── attributes/ │ │ │ └── .gitkeep │ │ ├── calendars/ │ │ │ └── .gitkeep │ │ ├── campaigns/ │ │ │ └── .gitkeep │ │ ├── emails/ │ │ │ └── .gitkeep │ │ ├── entities/ │ │ │ └── .gitkeep │ │ ├── front/ │ │ │ └── .gitkeep │ │ ├── maps/ │ │ │ └── .gitkeep │ │ ├── readme.md │ │ ├── settings/ │ │ │ └── .gitkeep │ │ ├── subscriptions/ │ │ │ └── .gitkeep │ │ ├── timelines/ │ │ │ └── .gitkeep │ │ └── users/ │ │ └── .gitkeep │ ├── de/ │ │ ├── abilities.php │ │ ├── account/ │ │ │ └── social.php │ │ ├── attribute_templates.php │ │ ├── attributes/ │ │ │ └── templates.php │ │ ├── auth.php │ │ ├── banners.php │ │ ├── billing/ │ │ │ ├── information.php │ │ │ ├── invoices.php │ │ │ ├── menu.php │ │ │ └── payment_methods.php │ │ ├── bookmarks.php │ │ ├── bragi.php │ │ ├── calendars/ │ │ │ └── weather.php │ │ ├── calendars.php │ │ ├── callouts.php │ │ ├── campaigns/ │ │ │ ├── achievements.php │ │ │ ├── applications.php │ │ │ ├── builder.php │ │ │ ├── dashboard-header.php │ │ │ ├── default-images.php │ │ │ ├── delete.php │ │ │ ├── export.php │ │ │ ├── gallery.php │ │ │ ├── import.php │ │ │ ├── invites.php │ │ │ ├── limits.php │ │ │ ├── members.php │ │ │ ├── modules.php │ │ │ ├── overview.php │ │ │ ├── plugins.php │ │ │ ├── public.php │ │ │ ├── recovery.php │ │ │ ├── roles.php │ │ │ ├── sidebar.php │ │ │ ├── stats.php │ │ │ ├── styles.php │ │ │ ├── vanity.php │ │ │ └── webhooks.php │ │ ├── campaigns.php │ │ ├── characters.php │ │ ├── colours.php │ │ ├── concept.php │ │ ├── confirm/ │ │ │ └── editing.php │ │ ├── confirm.php │ │ ├── conversations.php │ │ ├── cookieconsent.php │ │ ├── creatures.php │ │ ├── crud.php │ │ ├── dashboard.php │ │ ├── dashboards/ │ │ │ ├── setup.php │ │ │ └── widgets/ │ │ │ ├── calendar.php │ │ │ ├── campaign.php │ │ │ ├── header.php │ │ │ ├── help.php │ │ │ ├── preview.php │ │ │ ├── random.php │ │ │ ├── recent.php │ │ │ └── welcome.php │ │ ├── datagrids.php │ │ ├── datetime.php │ │ ├── default.php │ │ ├── dice_roll_results.php │ │ ├── dice_rolls.php │ │ ├── emails/ │ │ │ ├── activity/ │ │ │ │ ├── email.php │ │ │ │ └── password.php │ │ │ ├── purge/ │ │ │ │ ├── first.php │ │ │ │ └── second.php │ │ │ ├── subscriptions/ │ │ │ │ ├── expiring.php │ │ │ │ ├── upcoming.php │ │ │ │ └── validation.php │ │ │ ├── validation.php │ │ │ ├── welcome/ │ │ │ │ └── 2024.php │ │ │ └── welcome.php │ │ ├── entities/ │ │ │ ├── abilities.php │ │ │ ├── actions.php │ │ │ ├── aliases.php │ │ │ ├── assets.php │ │ │ ├── attributes.php │ │ │ ├── children.php │ │ │ ├── events.php │ │ │ ├── files.php │ │ │ ├── image.php │ │ │ ├── inventories.php │ │ │ ├── links.php │ │ │ ├── logs.php │ │ │ ├── map-points.php │ │ │ ├── mentions.php │ │ │ ├── move.php │ │ │ ├── notes.php │ │ │ ├── permissions.php │ │ │ ├── pins.php │ │ │ ├── profile.php │ │ │ ├── quests.php │ │ │ ├── relations.php │ │ │ ├── reminders.php │ │ │ ├── story.php │ │ │ ├── tags.php │ │ │ ├── timelines.php │ │ │ └── transform.php │ │ ├── entities.php │ │ ├── errors.php │ │ ├── events.php │ │ ├── export.php │ │ ├── families/ │ │ │ └── trees.php │ │ ├── families.php │ │ ├── faq.php │ │ ├── fields.php │ │ ├── filters.php │ │ ├── footer.php │ │ ├── front/ │ │ │ ├── community-votes.php │ │ │ ├── hall-of-fame.php │ │ │ ├── kb.php │ │ │ └── newsletter.php │ │ ├── front.php │ │ ├── gallery.php │ │ ├── general.php │ │ ├── genres.php │ │ ├── header.php │ │ ├── helpers.php │ │ ├── history.php │ │ ├── items.php │ │ ├── journals.php │ │ ├── languages.php │ │ ├── lists.php │ │ ├── locations.php │ │ ├── maps/ │ │ │ ├── explore.php │ │ │ ├── groups.php │ │ │ ├── layers.php │ │ │ └── markers.php │ │ ├── maps.php │ │ ├── misc.php │ │ ├── notes.php │ │ ├── notifications.php │ │ ├── onboarding/ │ │ │ ├── attributes.php │ │ │ ├── characters.php │ │ │ ├── locations.php │ │ │ ├── posts.php │ │ │ ├── reminders.php │ │ │ └── tags.php │ │ ├── organisations.php │ │ ├── pagination.php │ │ ├── partials.php │ │ ├── passwords.php │ │ ├── patreon.php │ │ ├── permissions.php │ │ ├── pins.php │ │ ├── post_layouts.php │ │ ├── posts.php │ │ ├── presets.php │ │ ├── profiles.php │ │ ├── quests.php │ │ ├── races.php │ │ ├── redirects.php │ │ ├── releases.php │ │ ├── rpg_systems.php │ │ ├── search/ │ │ │ └── fulltext.php │ │ ├── search.php │ │ ├── seo.php │ │ ├── settings/ │ │ │ ├── account.php │ │ │ ├── appearance.php │ │ │ ├── boosters.php │ │ │ └── premium.php │ │ ├── settings.php │ │ ├── sidebar.php │ │ ├── starter.php │ │ ├── subscription.php │ │ ├── subscriptions/ │ │ │ ├── promos.php │ │ │ └── renew.php │ │ ├── subscriptions.php │ │ ├── tags.php │ │ ├── teams.php │ │ ├── tiers.php │ │ ├── timelines/ │ │ │ ├── elements.php │ │ │ └── eras.php │ │ ├── timelines.php │ │ ├── users/ │ │ │ └── profile.php │ │ ├── validation.php │ │ ├── visibilities.php │ │ ├── whiteboards/ │ │ │ └── draw.php │ │ └── whiteboards.php │ ├── en/ │ │ ├── abilities.php │ │ ├── account/ │ │ │ ├── email.php │ │ │ ├── password.php │ │ │ └── social.php │ │ ├── articles.php │ │ ├── assistance.php │ │ ├── attribute_templates.php │ │ ├── attributes/ │ │ │ └── templates.php │ │ ├── auth.php │ │ ├── banners.php │ │ ├── billing/ │ │ │ ├── information.php │ │ │ ├── invoices.php │ │ │ ├── menu.php │ │ │ └── payment_methods.php │ │ ├── bookmarks.php │ │ ├── bragi/ │ │ │ └── backstory.php │ │ ├── bragi.php │ │ ├── calendars/ │ │ │ └── weather.php │ │ ├── calendars.php │ │ ├── callouts.php │ │ ├── campaigns/ │ │ │ ├── achievements.php │ │ │ ├── applications.php │ │ │ ├── builder.php │ │ │ ├── categories.php │ │ │ ├── dashboard-header.php │ │ │ ├── default-images.php │ │ │ ├── defaults.php │ │ │ ├── delete.php │ │ │ ├── export.php │ │ │ ├── gallery.php │ │ │ ├── import.php │ │ │ ├── invites.php │ │ │ ├── limits.php │ │ │ ├── logs.php │ │ │ ├── members.php │ │ │ ├── modules.php │ │ │ ├── overview.php │ │ │ ├── permissions.php │ │ │ ├── plugins.php │ │ │ ├── public.php │ │ │ ├── recovery.php │ │ │ ├── roles.php │ │ │ ├── share.php │ │ │ ├── sidebar.php │ │ │ ├── stats.php │ │ │ ├── styles.php │ │ │ ├── vanity.php │ │ │ ├── visibilities.php │ │ │ └── webhooks.php │ │ ├── campaigns.php │ │ ├── characters.php │ │ ├── colours.php │ │ ├── concept.php │ │ ├── confirm/ │ │ │ └── editing.php │ │ ├── confirm.php │ │ ├── connections/ │ │ │ └── web.php │ │ ├── conversations.php │ │ ├── cookieconsent.php │ │ ├── creatures.php │ │ ├── crud.php │ │ ├── dashboard.php │ │ ├── dashboards/ │ │ │ ├── onboarding.php │ │ │ ├── premium.php │ │ │ ├── setup.php │ │ │ └── widgets/ │ │ │ ├── calendar.php │ │ │ ├── campaign.php │ │ │ ├── gallery.php │ │ │ ├── header.php │ │ │ ├── help.php │ │ │ ├── join.php │ │ │ ├── onboarding.php │ │ │ ├── preview.php │ │ │ ├── random.php │ │ │ ├── recent.php │ │ │ └── welcome.php │ │ ├── datagrids.php │ │ ├── datetime.php │ │ ├── default.php │ │ ├── dice_roll_results.php │ │ ├── dice_rolls.php │ │ ├── emails/ │ │ │ ├── activity/ │ │ │ │ ├── email.php │ │ │ │ └── password.php │ │ │ ├── purge/ │ │ │ │ ├── first.php │ │ │ │ └── second.php │ │ │ ├── subscriptions/ │ │ │ │ ├── expiring.php │ │ │ │ ├── paypal-expiring.php │ │ │ │ ├── upcoming.php │ │ │ │ └── validation.php │ │ │ ├── validation.php │ │ │ ├── welcome/ │ │ │ │ └── 2024.php │ │ │ └── welcome.php │ │ ├── entities/ │ │ │ ├── abilities.php │ │ │ ├── actions.php │ │ │ ├── aliases.php │ │ │ ├── assets.php │ │ │ ├── attributes.php │ │ │ ├── children.php │ │ │ ├── events.php │ │ │ ├── files.php │ │ │ ├── image.php │ │ │ ├── inventories.php │ │ │ ├── links.php │ │ │ ├── logs.php │ │ │ ├── map-points.php │ │ │ ├── mentions.php │ │ │ ├── move.php │ │ │ ├── notes.php │ │ │ ├── permissions.php │ │ │ ├── pins.php │ │ │ ├── profile.php │ │ │ ├── quests.php │ │ │ ├── relations.php │ │ │ ├── reminders.php │ │ │ ├── share.php │ │ │ ├── statuses.php │ │ │ ├── story.php │ │ │ ├── tags.php │ │ │ ├── timelines.php │ │ │ ├── tooltips.php │ │ │ └── transform.php │ │ ├── entities.php │ │ ├── entries/ │ │ │ ├── archetypes.php │ │ │ ├── archive.php │ │ │ ├── bulk.php │ │ │ ├── fields.php │ │ │ └── tabs.php │ │ ├── errors.php │ │ ├── events.php │ │ ├── export.php │ │ ├── families/ │ │ │ └── trees.php │ │ ├── families.php │ │ ├── fields.php │ │ ├── filters.php │ │ ├── footer.php │ │ ├── front/ │ │ │ ├── community-votes.php │ │ │ ├── hall-of-fame.php │ │ │ ├── kb.php │ │ │ └── newsletter.php │ │ ├── front.php │ │ ├── gallery.php │ │ ├── general.php │ │ ├── genres.php │ │ ├── header.php │ │ ├── helpers.php │ │ ├── history.php │ │ ├── items.php │ │ ├── journals.php │ │ ├── languages.php │ │ ├── lists.php │ │ ├── locations.php │ │ ├── maps/ │ │ │ ├── explore.php │ │ │ ├── groups.php │ │ │ ├── layers.php │ │ │ └── markers.php │ │ ├── maps.php │ │ ├── misc.php │ │ ├── notes.php │ │ ├── notifications.php │ │ ├── onboarding/ │ │ │ ├── attributes.php │ │ │ ├── characters.php │ │ │ ├── locations.php │ │ │ ├── posts.php │ │ │ ├── reminders.php │ │ │ └── tags.php │ │ ├── organisations.php │ │ ├── pagination.php │ │ ├── partials.php │ │ ├── passwords.php │ │ ├── patreon.php │ │ ├── permissions.php │ │ ├── pins.php │ │ ├── playstyles.php │ │ ├── post_layouts.php │ │ ├── posts/ │ │ │ └── templates.php │ │ ├── posts.php │ │ ├── presets.php │ │ ├── profiles.php │ │ ├── quests.php │ │ ├── races.php │ │ ├── redirects.php │ │ ├── referrals.php │ │ ├── releases.php │ │ ├── rpg_systems.php │ │ ├── search/ │ │ │ └── fulltext.php │ │ ├── search.php │ │ ├── seo.php │ │ ├── settings/ │ │ │ ├── account.php │ │ │ ├── api.php │ │ │ ├── appearance.php │ │ │ ├── boosters.php │ │ │ └── premium.php │ │ ├── settings.php │ │ ├── sidebar.php │ │ ├── spotlights.php │ │ ├── starter.php │ │ ├── subscription.php │ │ ├── subscriptions/ │ │ │ ├── cancellation.php │ │ │ ├── cancelled.php │ │ │ ├── confirm.php │ │ │ ├── faq.php │ │ │ ├── finish.php │ │ │ ├── free-trial.php │ │ │ ├── paypal-renew.php │ │ │ ├── paypal.php │ │ │ ├── promos.php │ │ │ └── renew.php │ │ ├── subscriptions.php │ │ ├── tags.php │ │ ├── teams.php │ │ ├── tiers.php │ │ ├── timelines/ │ │ │ ├── elements.php │ │ │ └── eras.php │ │ ├── timelines.php │ │ ├── tiptap.php │ │ ├── tutorials/ │ │ │ ├── actions.php │ │ │ ├── characters.php │ │ │ └── home.php │ │ ├── users/ │ │ │ └── profile.php │ │ ├── validation.php │ │ ├── visibilities.php │ │ ├── whiteboards/ │ │ │ └── draw.php │ │ └── whiteboards.php │ ├── en-US/ │ │ ├── bookmarks.php │ │ ├── calendars/ │ │ │ └── weather.php │ │ ├── calendars.php │ │ ├── campaigns/ │ │ │ └── builder.php │ │ ├── campaigns.php │ │ ├── characters.php │ │ ├── colours.php │ │ ├── crud.php │ │ ├── dashboard.php │ │ ├── emails/ │ │ │ └── welcome.php │ │ ├── entities/ │ │ │ └── attributes.php │ │ ├── entities.php │ │ ├── front.php │ │ ├── helpers.php │ │ ├── items.php │ │ ├── locations.php │ │ ├── maps/ │ │ │ └── markers.php │ │ ├── organisations.php │ │ ├── quests.php │ │ └── sidebar.php │ ├── es/ │ │ ├── abilities.php │ │ ├── account/ │ │ │ ├── email.php │ │ │ ├── password.php │ │ │ └── social.php │ │ ├── assistance.php │ │ ├── attribute_templates.php │ │ ├── attributes/ │ │ │ └── templates.php │ │ ├── auth.php │ │ ├── billing/ │ │ │ ├── information.php │ │ │ ├── invoices.php │ │ │ ├── menu.php │ │ │ └── payment_methods.php │ │ ├── bookmarks.php │ │ ├── bragi/ │ │ │ └── backstory.php │ │ ├── bragi.php │ │ ├── calendars/ │ │ │ └── weather.php │ │ ├── calendars.php │ │ ├── callouts.php │ │ ├── campaigns/ │ │ │ ├── achievements.php │ │ │ ├── applications.php │ │ │ ├── builder.php │ │ │ ├── categories.php │ │ │ ├── dashboard-header.php │ │ │ ├── default-images.php │ │ │ ├── defaults.php │ │ │ ├── delete.php │ │ │ ├── export.php │ │ │ ├── gallery.php │ │ │ ├── import.php │ │ │ ├── invites.php │ │ │ ├── limits.php │ │ │ ├── logs.php │ │ │ ├── members.php │ │ │ ├── modules.php │ │ │ ├── overview.php │ │ │ ├── plugins.php │ │ │ ├── public.php │ │ │ ├── recovery.php │ │ │ ├── roles.php │ │ │ ├── share.php │ │ │ ├── sidebar.php │ │ │ ├── stats.php │ │ │ ├── styles.php │ │ │ ├── vanity.php │ │ │ ├── visibilities.php │ │ │ └── webhooks.php │ │ ├── campaigns.php │ │ ├── characters.php │ │ ├── colours.php │ │ ├── concept.php │ │ ├── confirm/ │ │ │ └── editing.php │ │ ├── confirm.php │ │ ├── connections/ │ │ │ └── web.php │ │ ├── conversations.php │ │ ├── cookieconsent.php │ │ ├── creatures.php │ │ ├── crud.php │ │ ├── dashboard.php │ │ ├── dashboards/ │ │ │ ├── onboarding.php │ │ │ ├── setup.php │ │ │ └── widgets/ │ │ │ ├── calendar.php │ │ │ ├── campaign.php │ │ │ ├── header.php │ │ │ ├── help.php │ │ │ ├── join.php │ │ │ ├── onboarding.php │ │ │ ├── preview.php │ │ │ ├── random.php │ │ │ ├── recent.php │ │ │ └── welcome.php │ │ ├── datagrids.php │ │ ├── datetime.php │ │ ├── default.php │ │ ├── dice_roll_results.php │ │ ├── dice_rolls.php │ │ ├── emails/ │ │ │ ├── activity/ │ │ │ │ ├── email.php │ │ │ │ └── password.php │ │ │ ├── purge/ │ │ │ │ ├── first.php │ │ │ │ └── second.php │ │ │ ├── subscriptions/ │ │ │ │ ├── expiring.php │ │ │ │ ├── upcoming.php │ │ │ │ └── validation.php │ │ │ ├── validation.php │ │ │ ├── welcome/ │ │ │ │ └── 2024.php │ │ │ └── welcome.php │ │ ├── entities/ │ │ │ ├── abilities.php │ │ │ ├── actions.php │ │ │ ├── aliases.php │ │ │ ├── assets.php │ │ │ ├── attributes.php │ │ │ ├── children.php │ │ │ ├── events.php │ │ │ ├── files.php │ │ │ ├── image.php │ │ │ ├── inventories.php │ │ │ ├── links.php │ │ │ ├── logs.php │ │ │ ├── map-points.php │ │ │ ├── mentions.php │ │ │ ├── move.php │ │ │ ├── notes.php │ │ │ ├── permissions.php │ │ │ ├── pins.php │ │ │ ├── profile.php │ │ │ ├── quests.php │ │ │ ├── relations.php │ │ │ ├── reminders.php │ │ │ ├── share.php │ │ │ ├── story.php │ │ │ ├── tags.php │ │ │ ├── timelines.php │ │ │ ├── tooltips.php │ │ │ └── transform.php │ │ ├── entities.php │ │ ├── entries/ │ │ │ ├── archetypes.php │ │ │ ├── bulk.php │ │ │ ├── fields.php │ │ │ └── tabs.php │ │ ├── errors.php │ │ ├── events.php │ │ ├── export.php │ │ ├── families/ │ │ │ └── trees.php │ │ ├── families.php │ │ ├── faq.php │ │ ├── fields.php │ │ ├── filters.php │ │ ├── footer.php │ │ ├── front/ │ │ │ ├── community-votes.php │ │ │ ├── hall-of-fame.php │ │ │ ├── kb.php │ │ │ └── newsletter.php │ │ ├── front.php │ │ ├── gallery.php │ │ ├── general.php │ │ ├── genres.php │ │ ├── header.php │ │ ├── helpers.php │ │ ├── history.php │ │ ├── items.php │ │ ├── journals.php │ │ ├── languages.php │ │ ├── lists.php │ │ ├── locations.php │ │ ├── maps/ │ │ │ ├── explore.php │ │ │ ├── groups.php │ │ │ ├── layers.php │ │ │ └── markers.php │ │ ├── maps.php │ │ ├── misc.php │ │ ├── notes.php │ │ ├── notifications.php │ │ ├── onboarding/ │ │ │ ├── attributes.php │ │ │ ├── characters.php │ │ │ ├── locations.php │ │ │ ├── posts.php │ │ │ ├── reminders.php │ │ │ └── tags.php │ │ ├── organisations.php │ │ ├── pagination.php │ │ ├── partials.php │ │ ├── passwords.php │ │ ├── patreon.php │ │ ├── permissions.php │ │ ├── pins.php │ │ ├── playstyles.php │ │ ├── post_layouts.php │ │ ├── posts/ │ │ │ └── templates.php │ │ ├── posts.php │ │ ├── presets.php │ │ ├── profiles.php │ │ ├── quests.php │ │ ├── races.php │ │ ├── redirects.php │ │ ├── referrals.php │ │ ├── releases.php │ │ ├── rpg_systems.php │ │ ├── search/ │ │ │ └── fulltext.php │ │ ├── search.php │ │ ├── seo.php │ │ ├── settings/ │ │ │ ├── account.php │ │ │ ├── api.php │ │ │ ├── appearance.php │ │ │ ├── boosters.php │ │ │ └── premium.php │ │ ├── settings.php │ │ ├── sidebar.php │ │ ├── spotlights.php │ │ ├── starter.php │ │ ├── subscription.php │ │ ├── subscriptions/ │ │ │ ├── cancellation.php │ │ │ ├── cancelled.php │ │ │ ├── confirm.php │ │ │ ├── faq.php │ │ │ ├── finish.php │ │ │ ├── free-trial.php │ │ │ ├── paypal.php │ │ │ ├── promos.php │ │ │ └── renew.php │ │ ├── subscriptions.php │ │ ├── tags.php │ │ ├── teams.php │ │ ├── tiers.php │ │ ├── timelines/ │ │ │ ├── elements.php │ │ │ └── eras.php │ │ ├── timelines.php │ │ ├── tiptap.php │ │ ├── users/ │ │ │ └── profile.php │ │ ├── validation.php │ │ ├── visibilities.php │ │ ├── whiteboards/ │ │ │ └── draw.php │ │ └── whiteboards.php │ ├── fr/ │ │ ├── abilities.php │ │ ├── account/ │ │ │ ├── email.php │ │ │ ├── password.php │ │ │ └── social.php │ │ ├── articles.php │ │ ├── assistance.php │ │ ├── attribute_templates.php │ │ ├── attributes/ │ │ │ └── templates.php │ │ ├── auth.php │ │ ├── billing/ │ │ │ ├── information.php │ │ │ ├── invoices.php │ │ │ ├── menu.php │ │ │ └── payment_methods.php │ │ ├── bookmarks.php │ │ ├── bragi/ │ │ │ └── backstory.php │ │ ├── bragi.php │ │ ├── calendars/ │ │ │ └── weather.php │ │ ├── calendars.php │ │ ├── callouts.php │ │ ├── campaigns/ │ │ │ ├── achievements.php │ │ │ ├── applications.php │ │ │ ├── builder.php │ │ │ ├── categories.php │ │ │ ├── dashboard-header.php │ │ │ ├── default-images.php │ │ │ ├── defaults.php │ │ │ ├── delete.php │ │ │ ├── export.php │ │ │ ├── gallery.php │ │ │ ├── import.php │ │ │ ├── invites.php │ │ │ ├── limits.php │ │ │ ├── logs.php │ │ │ ├── members.php │ │ │ ├── modules.php │ │ │ ├── overview.php │ │ │ ├── plugins.php │ │ │ ├── public.php │ │ │ ├── recovery.php │ │ │ ├── roles.php │ │ │ ├── share.php │ │ │ ├── sidebar.php │ │ │ ├── stats.php │ │ │ ├── styles.php │ │ │ ├── vanity.php │ │ │ ├── visibilities.php │ │ │ └── webhooks.php │ │ ├── campaigns.php │ │ ├── characters.php │ │ ├── colours.php │ │ ├── concept.php │ │ ├── confirm/ │ │ │ └── editing.php │ │ ├── confirm.php │ │ ├── connections/ │ │ │ └── web.php │ │ ├── conversations.php │ │ ├── cookieconsent.php │ │ ├── creatures.php │ │ ├── crud.php │ │ ├── dashboard.php │ │ ├── dashboards/ │ │ │ ├── onboarding.php │ │ │ ├── premium.php │ │ │ ├── setup.php │ │ │ └── widgets/ │ │ │ ├── calendar.php │ │ │ ├── campaign.php │ │ │ ├── gallery.php │ │ │ ├── header.php │ │ │ ├── help.php │ │ │ ├── join.php │ │ │ ├── onboarding.php │ │ │ ├── preview.php │ │ │ ├── random.php │ │ │ ├── recent.php │ │ │ └── welcome.php │ │ ├── datagrids.php │ │ ├── datetime.php │ │ ├── default.php │ │ ├── dice_roll_results.php │ │ ├── dice_rolls.php │ │ ├── emails/ │ │ │ ├── activity/ │ │ │ │ ├── email.php │ │ │ │ └── password.php │ │ │ ├── purge/ │ │ │ │ ├── first.php │ │ │ │ └── second.php │ │ │ ├── subscriptions/ │ │ │ │ ├── expiring.php │ │ │ │ ├── paypal-expiring.php │ │ │ │ ├── upcoming.php │ │ │ │ └── validation.php │ │ │ ├── validation.php │ │ │ ├── welcome/ │ │ │ │ └── 2024.php │ │ │ └── welcome.php │ │ ├── entities/ │ │ │ ├── abilities.php │ │ │ ├── actions.php │ │ │ ├── aliases.php │ │ │ ├── assets.php │ │ │ ├── attributes.php │ │ │ ├── children.php │ │ │ ├── events.php │ │ │ ├── files.php │ │ │ ├── image.php │ │ │ ├── inventories.php │ │ │ ├── links.php │ │ │ ├── logs.php │ │ │ ├── map-points.php │ │ │ ├── mentions.php │ │ │ ├── move.php │ │ │ ├── notes.php │ │ │ ├── permissions.php │ │ │ ├── pins.php │ │ │ ├── profile.php │ │ │ ├── quests.php │ │ │ ├── relations.php │ │ │ ├── reminders.php │ │ │ ├── share.php │ │ │ ├── statuses.php │ │ │ ├── story.php │ │ │ ├── tags.php │ │ │ ├── timelines.php │ │ │ ├── tooltips.php │ │ │ └── transform.php │ │ ├── entities.php │ │ ├── entries/ │ │ │ ├── archetypes.php │ │ │ ├── archive.php │ │ │ ├── bulk.php │ │ │ ├── fields.php │ │ │ └── tabs.php │ │ ├── errors.php │ │ ├── events.php │ │ ├── export.php │ │ ├── families/ │ │ │ └── trees.php │ │ ├── families.php │ │ ├── faq.php │ │ ├── fields.php │ │ ├── filters.php │ │ ├── footer.php │ │ ├── front/ │ │ │ ├── community-votes.php │ │ │ ├── hall-of-fame.php │ │ │ ├── kb.php │ │ │ └── newsletter.php │ │ ├── front.php │ │ ├── gallery.php │ │ ├── general.php │ │ ├── genres.php │ │ ├── header.php │ │ ├── helpers.php │ │ ├── history.php │ │ ├── items.php │ │ ├── journals.php │ │ ├── languages.php │ │ ├── lists.php │ │ ├── locations.php │ │ ├── maps/ │ │ │ ├── explore.php │ │ │ ├── groups.php │ │ │ ├── layers.php │ │ │ └── markers.php │ │ ├── maps.php │ │ ├── misc.php │ │ ├── notes.php │ │ ├── notifications.php │ │ ├── onboarding/ │ │ │ ├── attributes.php │ │ │ ├── characters.php │ │ │ ├── locations.php │ │ │ ├── posts.php │ │ │ ├── reminders.php │ │ │ └── tags.php │ │ ├── organisations.php │ │ ├── pagination.php │ │ ├── partials.php │ │ ├── passwords.php │ │ ├── patreon.php │ │ ├── permissions.php │ │ ├── pins.php │ │ ├── playstyles.php │ │ ├── post_layouts.php │ │ ├── posts/ │ │ │ └── templates.php │ │ ├── posts.php │ │ ├── presets.php │ │ ├── profiles.php │ │ ├── quests.php │ │ ├── races.php │ │ ├── redirects.php │ │ ├── referrals.php │ │ ├── releases.php │ │ ├── rpg_systems.php │ │ ├── search/ │ │ │ └── fulltext.php │ │ ├── search.php │ │ ├── seo.php │ │ ├── settings/ │ │ │ ├── account.php │ │ │ ├── api.php │ │ │ ├── appearance.php │ │ │ ├── boosters.php │ │ │ └── premium.php │ │ ├── settings.php │ │ ├── sidebar.php │ │ ├── spotlights.php │ │ ├── starter.php │ │ ├── subscription.php │ │ ├── subscriptions/ │ │ │ ├── cancellation.php │ │ │ ├── cancelled.php │ │ │ ├── confirm.php │ │ │ ├── faq.php │ │ │ ├── finish.php │ │ │ ├── free-trial.php │ │ │ ├── paypal-renew.php │ │ │ ├── paypal.php │ │ │ ├── promos.php │ │ │ └── renew.php │ │ ├── subscriptions.php │ │ ├── tags.php │ │ ├── teams.php │ │ ├── tiers.php │ │ ├── timelines/ │ │ │ ├── elements.php │ │ │ └── eras.php │ │ ├── timelines.php │ │ ├── tiptap.php │ │ ├── users/ │ │ │ └── profile.php │ │ ├── validation.php │ │ ├── visibilities.php │ │ ├── whiteboards/ │ │ │ └── draw.php │ │ └── whiteboards.php │ ├── hr/ │ │ ├── abilities.php │ │ ├── attribute_templates.php │ │ ├── attributes/ │ │ │ └── templates.php │ │ ├── auth.php │ │ ├── bookmarks.php │ │ ├── calendars/ │ │ │ └── weather.php │ │ ├── calendars.php │ │ ├── campaigns/ │ │ │ ├── applications.php │ │ │ ├── dashboard-header.php │ │ │ ├── default-images.php │ │ │ ├── gallery.php │ │ │ ├── plugins.php │ │ │ ├── recovery.php │ │ │ └── stats.php │ │ ├── campaigns.php │ │ ├── characters.php │ │ ├── colours.php │ │ ├── conversations.php │ │ ├── crud.php │ │ ├── dashboard.php │ │ ├── datetime.php │ │ ├── default.php │ │ ├── dice_roll_results.php │ │ ├── dice_rolls.php │ │ ├── emails/ │ │ │ └── welcome.php │ │ ├── entities/ │ │ │ ├── abilities.php │ │ │ ├── actions.php │ │ │ ├── assets.php │ │ │ ├── attributes.php │ │ │ ├── events.php │ │ │ ├── files.php │ │ │ ├── image.php │ │ │ ├── inventories.php │ │ │ ├── links.php │ │ │ ├── logs.php │ │ │ ├── map-points.php │ │ │ ├── mentions.php │ │ │ ├── move.php │ │ │ ├── notes.php │ │ │ ├── permissions.php │ │ │ ├── pins.php │ │ │ ├── profile.php │ │ │ ├── quests.php │ │ │ ├── relations.php │ │ │ ├── story.php │ │ │ ├── timelines.php │ │ │ └── transform.php │ │ ├── entities.php │ │ ├── errors.php │ │ ├── events.php │ │ ├── families.php │ │ ├── faq.php │ │ ├── footer.php │ │ ├── front/ │ │ │ ├── community-votes.php │ │ │ ├── hall-of-fame.php │ │ │ └── newsletter.php │ │ ├── front.php │ │ ├── header.php │ │ ├── helpers.php │ │ ├── items.php │ │ ├── journals.php │ │ ├── languages.php │ │ ├── locations.php │ │ ├── maps/ │ │ │ ├── groups.php │ │ │ ├── layers.php │ │ │ └── markers.php │ │ ├── maps.php │ │ ├── misc.php │ │ ├── notes.php │ │ ├── notifications.php │ │ ├── organisations.php │ │ ├── pagination.php │ │ ├── partials.php │ │ ├── passwords.php │ │ ├── patreon.php │ │ ├── profiles.php │ │ ├── quests.php │ │ ├── races.php │ │ ├── redirects.php │ │ ├── releases.php │ │ ├── rpg_systems.php │ │ ├── search.php │ │ ├── settings.php │ │ ├── sidebar.php │ │ ├── starter.php │ │ ├── subscriptions.php │ │ ├── tags.php │ │ ├── teams.php │ │ ├── tiers.php │ │ ├── timelines/ │ │ │ ├── elements.php │ │ │ └── eras.php │ │ ├── timelines.php │ │ └── validation.php │ ├── it/ │ │ ├── abilities.php │ │ ├── attribute_templates.php │ │ ├── attributes/ │ │ │ └── templates.php │ │ ├── auth.php │ │ ├── billing/ │ │ │ ├── invoices.php │ │ │ ├── menu.php │ │ │ └── payment_methods.php │ │ ├── bookmarks.php │ │ ├── bragi.php │ │ ├── calendars/ │ │ │ └── weather.php │ │ ├── calendars.php │ │ ├── callouts.php │ │ ├── campaigns/ │ │ │ ├── achievements.php │ │ │ ├── applications.php │ │ │ ├── builder.php │ │ │ ├── dashboard-header.php │ │ │ ├── default-images.php │ │ │ ├── export.php │ │ │ ├── gallery.php │ │ │ ├── import.php │ │ │ ├── limits.php │ │ │ ├── modules.php │ │ │ ├── plugins.php │ │ │ ├── public.php │ │ │ ├── recovery.php │ │ │ ├── roles.php │ │ │ ├── sidebar.php │ │ │ ├── stats.php │ │ │ ├── styles.php │ │ │ ├── vanity.php │ │ │ └── webhooks.php │ │ ├── campaigns.php │ │ ├── characters.php │ │ ├── colours.php │ │ ├── concept.php │ │ ├── confirm/ │ │ │ └── editing.php │ │ ├── conversations.php │ │ ├── cookieconsent.php │ │ ├── creatures.php │ │ ├── crud.php │ │ ├── dashboard.php │ │ ├── dashboards/ │ │ │ └── widgets/ │ │ │ └── welcome.php │ │ ├── datagrids.php │ │ ├── datetime.php │ │ ├── default.php │ │ ├── dice_roll_results.php │ │ ├── dice_rolls.php │ │ ├── emails/ │ │ │ ├── purge/ │ │ │ │ ├── first.php │ │ │ │ └── second.php │ │ │ ├── subscriptions/ │ │ │ │ ├── expiring.php │ │ │ │ ├── upcoming.php │ │ │ │ └── validation.php │ │ │ ├── validation.php │ │ │ ├── welcome/ │ │ │ │ └── 2024.php │ │ │ └── welcome.php │ │ ├── entities/ │ │ │ ├── abilities.php │ │ │ ├── actions.php │ │ │ ├── aliases.php │ │ │ ├── assets.php │ │ │ ├── attributes.php │ │ │ ├── events.php │ │ │ ├── files.php │ │ │ ├── image.php │ │ │ ├── inventories.php │ │ │ ├── links.php │ │ │ ├── logs.php │ │ │ ├── map-points.php │ │ │ ├── mentions.php │ │ │ ├── move.php │ │ │ ├── notes.php │ │ │ ├── permissions.php │ │ │ ├── pins.php │ │ │ ├── profile.php │ │ │ ├── quests.php │ │ │ ├── relations.php │ │ │ ├── story.php │ │ │ ├── timelines.php │ │ │ └── transform.php │ │ ├── entities.php │ │ ├── errors.php │ │ ├── events.php │ │ ├── families/ │ │ │ └── trees.php │ │ ├── families.php │ │ ├── faq.php │ │ ├── fields.php │ │ ├── filters.php │ │ ├── footer.php │ │ ├── front/ │ │ │ ├── community-votes.php │ │ │ ├── hall-of-fame.php │ │ │ ├── kb.php │ │ │ └── newsletter.php │ │ ├── front.php │ │ ├── gallery.php │ │ ├── general.php │ │ ├── genres.php │ │ ├── header.php │ │ ├── helpers.php │ │ ├── history.php │ │ ├── items.php │ │ ├── journals.php │ │ ├── languages.php │ │ ├── locations.php │ │ ├── maps/ │ │ │ ├── explore.php │ │ │ ├── groups.php │ │ │ ├── layers.php │ │ │ └── markers.php │ │ ├── maps.php │ │ ├── misc.php │ │ ├── notes.php │ │ ├── notifications.php │ │ ├── organisations.php │ │ ├── pagination.php │ │ ├── partials.php │ │ ├── passwords.php │ │ ├── patreon.php │ │ ├── pins.php │ │ ├── post_layouts.php │ │ ├── posts.php │ │ ├── presets.php │ │ ├── profiles.php │ │ ├── quests.php │ │ ├── races.php │ │ ├── redirects.php │ │ ├── releases.php │ │ ├── rpg_systems.php │ │ ├── search/ │ │ │ └── fulltext.php │ │ ├── search.php │ │ ├── settings/ │ │ │ ├── appearance.php │ │ │ ├── boosters.php │ │ │ └── premium.php │ │ ├── settings.php │ │ ├── sidebar.php │ │ ├── starter.php │ │ ├── subscription.php │ │ ├── subscriptions/ │ │ │ └── promos.php │ │ ├── subscriptions.php │ │ ├── tags.php │ │ ├── teams.php │ │ ├── tiers.php │ │ ├── timelines/ │ │ │ ├── elements.php │ │ │ └── eras.php │ │ ├── timelines.php │ │ ├── users/ │ │ │ └── profile.php │ │ ├── validation.php │ │ └── visibilities.php │ ├── nl/ │ │ ├── abilities.php │ │ ├── attribute_templates.php │ │ ├── auth.php │ │ ├── bookmarks.php │ │ ├── calendars/ │ │ │ └── weather.php │ │ ├── calendars.php │ │ ├── campaigns/ │ │ │ ├── applications.php │ │ │ ├── default-images.php │ │ │ ├── gallery.php │ │ │ ├── plugins.php │ │ │ ├── recovery.php │ │ │ └── stats.php │ │ ├── campaigns.php │ │ ├── characters.php │ │ ├── colours.php │ │ ├── conversations.php │ │ ├── crud.php │ │ ├── dashboard.php │ │ ├── datetime.php │ │ ├── default.php │ │ ├── dice_roll_results.php │ │ ├── dice_rolls.php │ │ ├── emails/ │ │ │ └── welcome.php │ │ ├── entities/ │ │ │ ├── abilities.php │ │ │ ├── actions.php │ │ │ ├── attributes.php │ │ │ ├── events.php │ │ │ ├── inventories.php │ │ │ ├── links.php │ │ │ ├── logs.php │ │ │ ├── map-points.php │ │ │ ├── mentions.php │ │ │ ├── notes.php │ │ │ ├── relations.php │ │ │ └── timelines.php │ │ ├── entities.php │ │ ├── errors.php │ │ ├── events.php │ │ ├── families.php │ │ ├── faq.php │ │ ├── footer.php │ │ ├── front/ │ │ │ ├── community-votes.php │ │ │ ├── hall-of-fame.php │ │ │ └── newsletter.php │ │ ├── front.php │ │ ├── header.php │ │ ├── helpers.php │ │ ├── items.php │ │ ├── journals.php │ │ ├── languages.php │ │ ├── locations.php │ │ ├── maps/ │ │ │ ├── groups.php │ │ │ ├── layers.php │ │ │ └── markers.php │ │ ├── maps.php │ │ ├── misc.php │ │ ├── notes.php │ │ ├── notifications.php │ │ ├── organisations.php │ │ ├── pagination.php │ │ ├── partials.php │ │ ├── passwords.php │ │ ├── patreon.php │ │ ├── profiles.php │ │ ├── quests.php │ │ ├── races.php │ │ ├── redirects.php │ │ ├── releases.php │ │ ├── rpg_systems.php │ │ ├── search.php │ │ ├── settings.php │ │ ├── sidebar.php │ │ ├── starter.php │ │ ├── subscriptions.php │ │ ├── tags.php │ │ ├── teams.php │ │ ├── tiers.php │ │ ├── timelines/ │ │ │ ├── elements.php │ │ │ └── eras.php │ │ ├── timelines.php │ │ └── validation.php │ ├── pl/ │ │ ├── abilities.php │ │ ├── account/ │ │ │ ├── email.php │ │ │ ├── password.php │ │ │ └── social.php │ │ ├── assistance.php │ │ ├── attribute_templates.php │ │ ├── attributes/ │ │ │ └── templates.php │ │ ├── auth.php │ │ ├── banners.php │ │ ├── billing/ │ │ │ ├── information.php │ │ │ ├── invoices.php │ │ │ ├── menu.php │ │ │ └── payment_methods.php │ │ ├── bookmarks.php │ │ ├── bragi/ │ │ │ └── backstory.php │ │ ├── bragi.php │ │ ├── calendars/ │ │ │ ├── .gitkeep │ │ │ └── weather.php │ │ ├── calendars.php │ │ ├── callouts.php │ │ ├── campaigns/ │ │ │ ├── .gitkeep │ │ │ ├── achievements.php │ │ │ ├── applications.php │ │ │ ├── builder.php │ │ │ ├── dashboard-header.php │ │ │ ├── default-images.php │ │ │ ├── defaults.php │ │ │ ├── delete.php │ │ │ ├── export.php │ │ │ ├── gallery.php │ │ │ ├── import.php │ │ │ ├── invites.php │ │ │ ├── limits.php │ │ │ ├── logs.php │ │ │ ├── members.php │ │ │ ├── modules.php │ │ │ ├── overview.php │ │ │ ├── plugins.php │ │ │ ├── public.php │ │ │ ├── recovery.php │ │ │ ├── roles.php │ │ │ ├── sidebar.php │ │ │ ├── stats.php │ │ │ ├── styles.php │ │ │ ├── vanity.php │ │ │ ├── visibilities.php │ │ │ └── webhooks.php │ │ ├── campaigns.php │ │ ├── characters.php │ │ ├── colours.php │ │ ├── concept.php │ │ ├── confirm/ │ │ │ └── editing.php │ │ ├── confirm.php │ │ ├── connections/ │ │ │ └── web.php │ │ ├── conversations.php │ │ ├── cookieconsent.php │ │ ├── creatures.php │ │ ├── crud.php │ │ ├── dashboard.php │ │ ├── dashboards/ │ │ │ ├── onboarding.php │ │ │ ├── setup.php │ │ │ └── widgets/ │ │ │ ├── calendar.php │ │ │ ├── campaign.php │ │ │ ├── header.php │ │ │ ├── help.php │ │ │ ├── onboarding.php │ │ │ ├── preview.php │ │ │ ├── random.php │ │ │ ├── recent.php │ │ │ └── welcome.php │ │ ├── datagrids.php │ │ ├── datetime.php │ │ ├── default.php │ │ ├── dice_roll_results.php │ │ ├── dice_rolls.php │ │ ├── emails/ │ │ │ ├── activity/ │ │ │ │ ├── email.php │ │ │ │ └── password.php │ │ │ ├── purge/ │ │ │ │ ├── first.php │ │ │ │ └── second.php │ │ │ ├── subscriptions/ │ │ │ │ ├── expiring.php │ │ │ │ ├── upcoming.php │ │ │ │ └── validation.php │ │ │ ├── validation.php │ │ │ ├── welcome/ │ │ │ │ └── 2024.php │ │ │ └── welcome.php │ │ ├── entities/ │ │ │ ├── .gitkeep │ │ │ ├── abilities.php │ │ │ ├── actions.php │ │ │ ├── aliases.php │ │ │ ├── assets.php │ │ │ ├── attributes.php │ │ │ ├── children.php │ │ │ ├── events.php │ │ │ ├── files.php │ │ │ ├── image.php │ │ │ ├── inventories.php │ │ │ ├── links.php │ │ │ ├── logs.php │ │ │ ├── map-points.php │ │ │ ├── mentions.php │ │ │ ├── move.php │ │ │ ├── notes.php │ │ │ ├── permissions.php │ │ │ ├── pins.php │ │ │ ├── profile.php │ │ │ ├── quests.php │ │ │ ├── relations.php │ │ │ ├── reminders.php │ │ │ ├── story.php │ │ │ ├── tags.php │ │ │ ├── timelines.php │ │ │ ├── tooltips.php │ │ │ └── transform.php │ │ ├── entities.php │ │ ├── errors.php │ │ ├── events.php │ │ ├── export.php │ │ ├── families/ │ │ │ └── trees.php │ │ ├── families.php │ │ ├── faq.php │ │ ├── fields.php │ │ ├── filters.php │ │ ├── footer.php │ │ ├── front/ │ │ │ ├── community-votes.php │ │ │ ├── hall-of-fame.php │ │ │ ├── kb.php │ │ │ └── newsletter.php │ │ ├── front.php │ │ ├── gallery.php │ │ ├── general.php │ │ ├── genres.php │ │ ├── header.php │ │ ├── helpers.php │ │ ├── history.php │ │ ├── items.php │ │ ├── journals.php │ │ ├── languages.php │ │ ├── lists.php │ │ ├── locations.php │ │ ├── maps/ │ │ │ ├── .gitkeep │ │ │ ├── explore.php │ │ │ ├── groups.php │ │ │ ├── layers.php │ │ │ └── markers.php │ │ ├── maps.php │ │ ├── misc.php │ │ ├── notes.php │ │ ├── notifications.php │ │ ├── onboarding/ │ │ │ ├── attributes.php │ │ │ ├── characters.php │ │ │ ├── locations.php │ │ │ ├── posts.php │ │ │ ├── reminders.php │ │ │ └── tags.php │ │ ├── organisations.php │ │ ├── pagination.php │ │ ├── partials.php │ │ ├── passwords.php │ │ ├── patreon.php │ │ ├── permissions.php │ │ ├── pins.php │ │ ├── post_layouts.php │ │ ├── posts.php │ │ ├── presets.php │ │ ├── profiles.php │ │ ├── quests.php │ │ ├── races.php │ │ ├── redirects.php │ │ ├── referrals.php │ │ ├── releases.php │ │ ├── rpg_systems.php │ │ ├── search/ │ │ │ └── fulltext.php │ │ ├── search.php │ │ ├── seo.php │ │ ├── settings/ │ │ │ ├── account.php │ │ │ ├── api.php │ │ │ ├── appearance.php │ │ │ ├── boosters.php │ │ │ └── premium.php │ │ ├── settings.php │ │ ├── sidebar.php │ │ ├── spotlights.php │ │ ├── starter.php │ │ ├── subscription.php │ │ ├── subscriptions/ │ │ │ ├── cancellation.php │ │ │ ├── cancelled.php │ │ │ ├── confirm.php │ │ │ ├── faq.php │ │ │ ├── finish.php │ │ │ ├── free-trial.php │ │ │ ├── paypal.php │ │ │ ├── promos.php │ │ │ └── renew.php │ │ ├── subscriptions.php │ │ ├── tags.php │ │ ├── teams.php │ │ ├── tiers.php │ │ ├── timelines/ │ │ │ ├── .gitkeep │ │ │ ├── elements.php │ │ │ └── eras.php │ │ ├── timelines.php │ │ ├── users/ │ │ │ └── profile.php │ │ ├── validation-inline.php │ │ ├── validation.php │ │ ├── visibilities.php │ │ ├── whiteboards/ │ │ │ └── draw.php │ │ └── whiteboards.php │ ├── pt-BR/ │ │ ├── abilities.php │ │ ├── account/ │ │ │ ├── email.php │ │ │ ├── password.php │ │ │ └── social.php │ │ ├── articles.php │ │ ├── assistance.php │ │ ├── attribute_templates.php │ │ ├── attributes/ │ │ │ └── templates.php │ │ ├── auth.php │ │ ├── banners.php │ │ ├── billing/ │ │ │ ├── information.php │ │ │ ├── invoices.php │ │ │ ├── menu.php │ │ │ └── payment_methods.php │ │ ├── bookmarks.php │ │ ├── bragi/ │ │ │ └── backstory.php │ │ ├── bragi.php │ │ ├── calendars/ │ │ │ └── weather.php │ │ ├── calendars.php │ │ ├── callouts.php │ │ ├── campaigns/ │ │ │ ├── achievements.php │ │ │ ├── applications.php │ │ │ ├── builder.php │ │ │ ├── categories.php │ │ │ ├── dashboard-header.php │ │ │ ├── default-images.php │ │ │ ├── delete.php │ │ │ ├── export.php │ │ │ ├── gallery.php │ │ │ ├── import.php │ │ │ ├── invites.php │ │ │ ├── limits.php │ │ │ ├── logs.php │ │ │ ├── members.php │ │ │ ├── modules.php │ │ │ ├── overview.php │ │ │ ├── plugins.php │ │ │ ├── public.php │ │ │ ├── recovery.php │ │ │ ├── roles.php │ │ │ ├── sidebar.php │ │ │ ├── stats.php │ │ │ ├── styles.php │ │ │ ├── vanity.php │ │ │ └── webhooks.php │ │ ├── campaigns.php │ │ ├── characters.php │ │ ├── colours.php │ │ ├── concept.php │ │ ├── confirm/ │ │ │ └── editing.php │ │ ├── confirm.php │ │ ├── conversations.php │ │ ├── cookieconsent.php │ │ ├── creatures.php │ │ ├── crud.php │ │ ├── dashboard.php │ │ ├── dashboards/ │ │ │ ├── premium.php │ │ │ └── widgets/ │ │ │ └── welcome.php │ │ ├── datagrids.php │ │ ├── datetime.php │ │ ├── default.php │ │ ├── dice_roll_results.php │ │ ├── dice_rolls.php │ │ ├── emails/ │ │ │ ├── activity/ │ │ │ │ ├── email.php │ │ │ │ └── password.php │ │ │ ├── purge/ │ │ │ │ ├── first.php │ │ │ │ └── second.php │ │ │ ├── subscriptions/ │ │ │ │ ├── expiring.php │ │ │ │ ├── upcoming.php │ │ │ │ └── validation.php │ │ │ ├── validation.php │ │ │ ├── welcome/ │ │ │ │ └── 2024.php │ │ │ └── welcome.php │ │ ├── entities/ │ │ │ ├── abilities.php │ │ │ ├── actions.php │ │ │ ├── aliases.php │ │ │ ├── assets.php │ │ │ ├── attributes.php │ │ │ ├── children.php │ │ │ ├── events.php │ │ │ ├── files.php │ │ │ ├── image.php │ │ │ ├── inventories.php │ │ │ ├── links.php │ │ │ ├── logs.php │ │ │ ├── map-points.php │ │ │ ├── mentions.php │ │ │ ├── move.php │ │ │ ├── notes.php │ │ │ ├── permissions.php │ │ │ ├── pins.php │ │ │ ├── profile.php │ │ │ ├── quests.php │ │ │ ├── relations.php │ │ │ ├── reminders.php │ │ │ ├── story.php │ │ │ ├── tags.php │ │ │ ├── timelines.php │ │ │ └── transform.php │ │ ├── entities.php │ │ ├── entries/ │ │ │ └── tabs.php │ │ ├── errors.php │ │ ├── events.php │ │ ├── families/ │ │ │ └── trees.php │ │ ├── families.php │ │ ├── faq.php │ │ ├── fields.php │ │ ├── filters.php │ │ ├── footer.php │ │ ├── front/ │ │ │ ├── community-votes.php │ │ │ ├── hall-of-fame.php │ │ │ ├── kb.php │ │ │ └── newsletter.php │ │ ├── front.php │ │ ├── gallery.php │ │ ├── general.php │ │ ├── genres.php │ │ ├── header.php │ │ ├── helpers.php │ │ ├── history.php │ │ ├── items.php │ │ ├── journals.php │ │ ├── languages.php │ │ ├── locations.php │ │ ├── maps/ │ │ │ ├── explore.php │ │ │ ├── groups.php │ │ │ ├── layers.php │ │ │ └── markers.php │ │ ├── maps.php │ │ ├── misc.php │ │ ├── notes.php │ │ ├── notifications.php │ │ ├── onboarding/ │ │ │ └── characters.php │ │ ├── organisations.php │ │ ├── partials.php │ │ ├── patreon.php │ │ ├── permissions.php │ │ ├── pins.php │ │ ├── playstyles.php │ │ ├── post_layouts.php │ │ ├── posts/ │ │ │ └── templates.php │ │ ├── posts.php │ │ ├── presets.php │ │ ├── profiles.php │ │ ├── quests.php │ │ ├── races.php │ │ ├── redirects.php │ │ ├── releases.php │ │ ├── rpg_systems.php │ │ ├── search/ │ │ │ └── fulltext.php │ │ ├── search.php │ │ ├── seo.php │ │ ├── settings/ │ │ │ ├── account.php │ │ │ ├── appearance.php │ │ │ ├── boosters.php │ │ │ └── premium.php │ │ ├── settings.php │ │ ├── sidebar.php │ │ ├── starter.php │ │ ├── subscription.php │ │ ├── subscriptions/ │ │ │ ├── cancelled.php │ │ │ ├── confirm.php │ │ │ ├── faq.php │ │ │ ├── finish.php │ │ │ ├── free-trial.php │ │ │ ├── promos.php │ │ │ └── renew.php │ │ ├── subscriptions.php │ │ ├── tags.php │ │ ├── teams.php │ │ ├── tiers.php │ │ ├── timelines/ │ │ │ ├── elements.php │ │ │ └── eras.php │ │ ├── timelines.php │ │ ├── tiptap.php │ │ ├── users/ │ │ │ └── profile.php │ │ ├── validation.php │ │ ├── visibilities.php │ │ └── whiteboards.php │ ├── ru/ │ │ ├── abilities.php │ │ ├── account/ │ │ │ ├── email.php │ │ │ ├── password.php │ │ │ └── social.php │ │ ├── assistance.php │ │ ├── attribute_templates.php │ │ ├── attributes/ │ │ │ └── templates.php │ │ ├── auth.php │ │ ├── banners.php │ │ ├── billing/ │ │ │ ├── information.php │ │ │ ├── invoices.php │ │ │ ├── menu.php │ │ │ └── payment_methods.php │ │ ├── bookmarks.php │ │ ├── bragi.php │ │ ├── calendars/ │ │ │ └── weather.php │ │ ├── calendars.php │ │ ├── callouts.php │ │ ├── campaigns/ │ │ │ ├── achievements.php │ │ │ ├── applications.php │ │ │ ├── dashboard-header.php │ │ │ ├── default-images.php │ │ │ ├── export.php │ │ │ ├── gallery.php │ │ │ ├── limits.php │ │ │ ├── plugins.php │ │ │ ├── public.php │ │ │ ├── recovery.php │ │ │ ├── roles.php │ │ │ ├── sidebar.php │ │ │ ├── stats.php │ │ │ └── styles.php │ │ ├── campaigns.php │ │ ├── characters.php │ │ ├── colours.php │ │ ├── concept.php │ │ ├── conversations.php │ │ ├── creatures.php │ │ ├── crud.php │ │ ├── dashboard.php │ │ ├── datetime.php │ │ ├── default.php │ │ ├── dice_roll_results.php │ │ ├── dice_rolls.php │ │ ├── emails/ │ │ │ ├── subscriptions/ │ │ │ │ ├── expiring.php │ │ │ │ └── upcoming.php │ │ │ └── welcome.php │ │ ├── entities/ │ │ │ ├── abilities.php │ │ │ ├── actions.php │ │ │ ├── aliases.php │ │ │ ├── assets.php │ │ │ ├── attributes.php │ │ │ ├── events.php │ │ │ ├── files.php │ │ │ ├── image.php │ │ │ ├── inventories.php │ │ │ ├── links.php │ │ │ ├── logs.php │ │ │ ├── map-points.php │ │ │ ├── mentions.php │ │ │ ├── move.php │ │ │ ├── notes.php │ │ │ ├── permissions.php │ │ │ ├── pins.php │ │ │ ├── profile.php │ │ │ ├── quests.php │ │ │ ├── relations.php │ │ │ ├── story.php │ │ │ ├── timelines.php │ │ │ └── transform.php │ │ ├── entities.php │ │ ├── errors.php │ │ ├── events.php │ │ ├── families.php │ │ ├── faq.php │ │ ├── fields.php │ │ ├── filters.php │ │ ├── footer.php │ │ ├── front/ │ │ │ ├── community-votes.php │ │ │ ├── hall-of-fame.php │ │ │ ├── kb.php │ │ │ └── newsletter.php │ │ ├── front.php │ │ ├── general.php │ │ ├── header.php │ │ ├── helpers.php │ │ ├── items.php │ │ ├── journals.php │ │ ├── languages.php │ │ ├── locations.php │ │ ├── maps/ │ │ │ ├── explore.php │ │ │ ├── groups.php │ │ │ ├── layers.php │ │ │ └── markers.php │ │ ├── maps.php │ │ ├── misc.php │ │ ├── notes.php │ │ ├── notifications.php │ │ ├── onboarding/ │ │ │ └── tags.php │ │ ├── organisations.php │ │ ├── pagination.php │ │ ├── partials.php │ │ ├── passwords.php │ │ ├── patreon.php │ │ ├── posts.php │ │ ├── presets.php │ │ ├── profiles.php │ │ ├── quests.php │ │ ├── races.php │ │ ├── redirects.php │ │ ├── releases.php │ │ ├── rpg_systems.php │ │ ├── search.php │ │ ├── settings/ │ │ │ └── boosters.php │ │ ├── settings.php │ │ ├── sidebar.php │ │ ├── starter.php │ │ ├── subscription.php │ │ ├── subscriptions/ │ │ │ └── promos.php │ │ ├── subscriptions.php │ │ ├── tags.php │ │ ├── teams.php │ │ ├── tiers.php │ │ ├── timelines/ │ │ │ ├── elements.php │ │ │ └── eras.php │ │ ├── timelines.php │ │ ├── users/ │ │ │ └── profile.php │ │ ├── validation.php │ │ ├── visibilities.php │ │ ├── whiteboards/ │ │ │ └── draw.php │ │ └── whiteboards.php │ ├── sk/ │ │ ├── abilities.php │ │ ├── articles.php │ │ ├── attribute_templates.php │ │ ├── attributes/ │ │ │ └── templates.php │ │ ├── auth.php │ │ ├── banners.php │ │ ├── billing/ │ │ │ ├── invoices.php │ │ │ ├── menu.php │ │ │ └── payment_methods.php │ │ ├── bookmarks.php │ │ ├── bragi.php │ │ ├── calendars/ │ │ │ └── weather.php │ │ ├── calendars.php │ │ ├── callouts.php │ │ ├── campaigns/ │ │ │ ├── achievements.php │ │ │ ├── applications.php │ │ │ ├── builder.php │ │ │ ├── categories.php │ │ │ ├── dashboard-header.php │ │ │ ├── default-images.php │ │ │ ├── delete.php │ │ │ ├── export.php │ │ │ ├── gallery.php │ │ │ ├── import.php │ │ │ ├── invites.php │ │ │ ├── limits.php │ │ │ ├── members.php │ │ │ ├── modules.php │ │ │ ├── overview.php │ │ │ ├── plugins.php │ │ │ ├── public.php │ │ │ ├── recovery.php │ │ │ ├── roles.php │ │ │ ├── sidebar.php │ │ │ ├── stats.php │ │ │ ├── styles.php │ │ │ ├── vanity.php │ │ │ └── webhooks.php │ │ ├── campaigns.php │ │ ├── characters.php │ │ ├── colours.php │ │ ├── concept.php │ │ ├── confirm/ │ │ │ └── editing.php │ │ ├── conversations.php │ │ ├── cookieconsent.php │ │ ├── creatures.php │ │ ├── crud.php │ │ ├── dashboard.php │ │ ├── dashboards/ │ │ │ └── widgets/ │ │ │ └── welcome.php │ │ ├── datagrids.php │ │ ├── datetime.php │ │ ├── default.php │ │ ├── dice_roll_results.php │ │ ├── dice_rolls.php │ │ ├── emails/ │ │ │ ├── activity/ │ │ │ │ └── password.php │ │ │ ├── purge/ │ │ │ │ ├── first.php │ │ │ │ └── second.php │ │ │ ├── subscriptions/ │ │ │ │ ├── expiring.php │ │ │ │ ├── upcoming.php │ │ │ │ └── validation.php │ │ │ ├── validation.php │ │ │ ├── welcome/ │ │ │ │ └── 2024.php │ │ │ └── welcome.php │ │ ├── entities/ │ │ │ ├── abilities.php │ │ │ ├── actions.php │ │ │ ├── aliases.php │ │ │ ├── assets.php │ │ │ ├── attributes.php │ │ │ ├── children.php │ │ │ ├── events.php │ │ │ ├── files.php │ │ │ ├── image.php │ │ │ ├── inventories.php │ │ │ ├── links.php │ │ │ ├── logs.php │ │ │ ├── map-points.php │ │ │ ├── mentions.php │ │ │ ├── move.php │ │ │ ├── notes.php │ │ │ ├── permissions.php │ │ │ ├── pins.php │ │ │ ├── profile.php │ │ │ ├── quests.php │ │ │ ├── relations.php │ │ │ ├── story.php │ │ │ ├── timelines.php │ │ │ └── transform.php │ │ ├── entities.php │ │ ├── errors.php │ │ ├── events.php │ │ ├── export.php │ │ ├── families/ │ │ │ └── trees.php │ │ ├── families.php │ │ ├── faq.php │ │ ├── fields.php │ │ ├── filters.php │ │ ├── footer.php │ │ ├── front/ │ │ │ ├── community-votes.php │ │ │ ├── hall-of-fame.php │ │ │ ├── kb.php │ │ │ └── newsletter.php │ │ ├── front.php │ │ ├── gallery.php │ │ ├── general.php │ │ ├── genres.php │ │ ├── header.php │ │ ├── helpers.php │ │ ├── history.php │ │ ├── items.php │ │ ├── journals.php │ │ ├── languages.php │ │ ├── locations.php │ │ ├── maps/ │ │ │ ├── explore.php │ │ │ ├── groups.php │ │ │ ├── layers.php │ │ │ └── markers.php │ │ ├── maps.php │ │ ├── misc.php │ │ ├── notes.php │ │ ├── notifications.php │ │ ├── onboarding/ │ │ │ └── tags.php │ │ ├── organisations.php │ │ ├── pagination.php │ │ ├── partials.php │ │ ├── passwords.php │ │ ├── patreon.php │ │ ├── permissions.php │ │ ├── pins.php │ │ ├── playstyles.php │ │ ├── post_layouts.php │ │ ├── posts.php │ │ ├── presets.php │ │ ├── profiles.php │ │ ├── quests.php │ │ ├── races.php │ │ ├── redirects.php │ │ ├── releases.php │ │ ├── rpg_systems.php │ │ ├── search/ │ │ │ └── fulltext.php │ │ ├── search.php │ │ ├── seo.php │ │ ├── settings/ │ │ │ ├── account.php │ │ │ ├── appearance.php │ │ │ ├── boosters.php │ │ │ └── premium.php │ │ ├── settings.php │ │ ├── sidebar.php │ │ ├── starter.php │ │ ├── subscription.php │ │ ├── subscriptions/ │ │ │ ├── promos.php │ │ │ └── renew.php │ │ ├── subscriptions.php │ │ ├── tags.php │ │ ├── teams.php │ │ ├── tiers.php │ │ ├── timelines/ │ │ │ ├── elements.php │ │ │ └── eras.php │ │ ├── timelines.php │ │ ├── tiptap.php │ │ ├── users/ │ │ │ └── profile.php │ │ ├── validation.php │ │ └── visibilities.php │ └── vendor/ │ ├── backup/ │ │ ├── ar/ │ │ │ └── notifications.php │ │ ├── ca/ │ │ │ └── notifications.php │ │ ├── cs/ │ │ │ └── notifications.php │ │ ├── da/ │ │ │ └── notifications.php │ │ ├── de/ │ │ │ └── notifications.php │ │ ├── en/ │ │ │ └── notifications.php │ │ ├── es/ │ │ │ └── notifications.php │ │ ├── fa/ │ │ │ └── notifications.php │ │ ├── fi/ │ │ │ └── notifications.php │ │ ├── fr/ │ │ │ └── notifications.php │ │ ├── gl/ │ │ │ └── notifications.php │ │ ├── hi/ │ │ │ └── notifications.php │ │ ├── hr/ │ │ │ └── notifications.php │ │ ├── id/ │ │ │ └── notifications.php │ │ ├── it/ │ │ │ └── notifications.php │ │ ├── ja/ │ │ │ └── notifications.php │ │ ├── nl/ │ │ │ └── notifications.php │ │ ├── no/ │ │ │ └── notifications.php │ │ ├── pl/ │ │ │ └── notifications.php │ │ ├── pt/ │ │ │ └── notifications.php │ │ ├── pt-BR/ │ │ │ └── notifications.php │ │ ├── ro/ │ │ │ └── notifications.php │ │ ├── ru/ │ │ │ └── notifications.php │ │ ├── sk/ │ │ │ └── notifications.php │ │ ├── tr/ │ │ │ └── notifications.php │ │ ├── uk/ │ │ │ └── notifications.php │ │ ├── zh-CN/ │ │ │ └── notifications.php │ │ └── zh-TW/ │ │ └── notifications.php │ └── dnd5emonster/ │ ├── ca/ │ │ └── template.php │ ├── cs/ │ │ └── template.php │ ├── de/ │ │ └── template.php │ ├── en/ │ │ └── template.php │ ├── es/ │ │ └── template.php │ ├── fr/ │ │ └── template.php │ ├── gl/ │ │ └── template.php │ ├── hu/ │ │ └── template.php │ ├── it/ │ │ └── template.php │ ├── pl/ │ │ └── template.php │ ├── pt-BR/ │ │ └── template.php │ ├── ru/ │ │ └── template.php │ └── sk/ │ └── template.php ├── larastan.php ├── package.json ├── phpcs.xml ├── phpmd_ruleset.xml ├── phpstan.neon ├── phpunit.xml ├── pint.json ├── public/ │ ├── .well-known/ │ │ └── security.txt │ ├── build/ │ │ ├── assets/ │ │ │ ├── Browser.vue_vue_type_script_setup_true_lang-DjY0tfEc.js │ │ │ ├── GalleryDialog-B3Id-RLo.js │ │ │ ├── GalleryDialog-SGgOgWve.css │ │ │ ├── SourceEditor-BKF0zshA.css │ │ │ ├── SourceEditor-CaEGRaAo.js │ │ │ ├── Tiptap-B5LGKvdR.css │ │ │ ├── Tiptap-Bd5ZGSft.js │ │ │ ├── _commonjsHelpers-Cpj98o6Y.js │ │ │ ├── _plugin-vue_export-helper-DlAUqK2U.js │ │ │ ├── abilities-_1tR-hmN.js │ │ │ ├── app-7Sr4fLAQ.css │ │ │ ├── app-B8BXQiap.js │ │ │ ├── app-CcekkIPy.css │ │ │ ├── attributes-BgyqIZFe.js │ │ │ ├── attributes-manager-Of4dtl9o.js │ │ │ ├── auth-Bh9mDens.css │ │ │ ├── auth-DX8SCiWG.js │ │ │ ├── billing-CAEv3gKN.js │ │ │ ├── calendar-9Uf0XYJF.js │ │ │ ├── character-BYzNtBCs.js │ │ │ ├── coloris-DsKOFKq5.js │ │ │ ├── colours-Dh8441-n.js │ │ │ ├── conversation-hoDojmhJ.js │ │ │ ├── cookieconsent-DM0O5r9k.js │ │ │ ├── cytoscape-cose-bilkent-DRrwnnKV.js │ │ │ ├── cytoscape-panzoom-Del_Rz3u.js │ │ │ ├── cytoscape.esm-BJ4qIETX.js │ │ │ ├── dark-Pb_2oqsz.css │ │ │ ├── dashboard-CsClHCyP.css │ │ │ ├── dashboard-DzoSMhdl.js │ │ │ ├── dialog-DkrH_pRQ.js │ │ │ ├── explore-PT_Dl9lc.js │ │ │ ├── family-tree-vue-BhAkMdmq.js │ │ │ ├── front-BDaha8uH.js │ │ │ ├── front-CZW4xdyL.css │ │ │ ├── gallery-DqcxhMJm.js │ │ │ ├── history-Bum1jYKg.js │ │ │ ├── html2canvas.esm-DXEQVQnt.js │ │ │ ├── import-CRZICNET.js │ │ │ ├── index-Bajpoqb9.js │ │ │ ├── index-D5GkNzM3.js │ │ │ ├── index.es-MeewMCO3.js │ │ │ ├── index.esm-DvuRQLEU.js │ │ │ ├── jspdf.es.min-DI22nqbU.js │ │ │ ├── map-v3-_JE1ac-e.js │ │ │ ├── maps-7UR0tBUB.css │ │ │ ├── midnight-DjmKO7Sj.css │ │ │ ├── preload-helper-I4rgV-VL.js │ │ │ ├── print-B43HD77n.css │ │ │ ├── profile-D4XIj8wj.js │ │ │ ├── purify.es-21m173o_.js │ │ │ ├── recovery-DDbs8NlV.js │ │ │ ├── relations-BhqWrOkS.css │ │ │ ├── relations-DFy0TfK7.js │ │ │ ├── settings-HvUxJh5V.js │ │ │ ├── sortable.esm-DdTU3J9A.js │ │ │ ├── story-CrmLJDK_.js │ │ │ ├── subscription-BGjwpB-C.css │ │ │ ├── subscription-CbUaAMac.js │ │ │ ├── summernote-DpnuH_QU.js │ │ │ ├── theme-builder-Cvbh2cpO.js │ │ │ ├── tinymce-C7wRrakS.css │ │ │ ├── tippy.esm-CnBRltuW.js │ │ │ ├── tree-Dna4NG6v.css │ │ │ ├── v-click-outside.umd-Cl-Y_A58.js │ │ │ ├── vendor-DEuctmxo.css │ │ │ ├── vendor-final--o6gRmZ3.js │ │ │ ├── vendor-tiptap-D5xFoo7B.js │ │ │ ├── vue-tippy.esm-browser-B_r0Ygiv.js │ │ │ ├── web-C9wt4HvN.css │ │ │ ├── web-CwwBh20P.js │ │ │ └── whiteboards-CYwbHh4e.js │ │ └── manifest.json │ ├── css/ │ │ ├── bootstrap-summernote.css │ │ ├── bootstrap.css │ │ ├── bootstrap.css.br │ │ └── bootstrap.min.css.br │ ├── fonts/ │ │ └── roboto/ │ │ ├── OFL.txt │ │ └── README.txt │ ├── images/ │ │ └── favicon/ │ │ └── site.webmanifest │ ├── index.php │ ├── js/ │ │ ├── vendor.js │ │ ├── vendor.js.LICENSE.txt │ │ └── vendor.js.br │ ├── main.js │ ├── mix-manifest.json │ ├── privacypolicy.html │ └── vendor/ │ ├── binarytorch/ │ │ └── larecipe/ │ │ └── assets/ │ │ ├── css/ │ │ │ ├── app.css │ │ │ ├── font-awesome-v4-shims.css │ │ │ └── font-awesome.css │ │ └── js/ │ │ └── app.js │ ├── bootstrap/ │ │ ├── css/ │ │ │ ├── bootstrap-grid.css │ │ │ ├── bootstrap-reboot.css │ │ │ └── bootstrap.css │ │ └── js/ │ │ ├── bootstrap.bundle.js │ │ └── bootstrap.js │ ├── bootstrap-switch/ │ │ ├── css/ │ │ │ ├── bootstrap2/ │ │ │ │ └── bootstrap-switch.css │ │ │ └── bootstrap3/ │ │ │ └── bootstrap-switch.css │ │ └── js/ │ │ └── bootstrap-switch.js │ ├── codemirror/ │ │ ├── addon/ │ │ │ ├── comment/ │ │ │ │ ├── comment.js │ │ │ │ └── continuecomment.js │ │ │ ├── dialog/ │ │ │ │ ├── dialog.css │ │ │ │ └── dialog.js │ │ │ ├── display/ │ │ │ │ ├── autorefresh.js │ │ │ │ ├── fullscreen.css │ │ │ │ ├── fullscreen.js │ │ │ │ ├── panel.js │ │ │ │ ├── placeholder.js │ │ │ │ └── rulers.js │ │ │ ├── edit/ │ │ │ │ ├── closebrackets.js │ │ │ │ ├── closetag.js │ │ │ │ ├── continuelist.js │ │ │ │ ├── matchbrackets.js │ │ │ │ ├── matchtags.js │ │ │ │ └── trailingspace.js │ │ │ ├── fold/ │ │ │ │ ├── brace-fold.js │ │ │ │ ├── comment-fold.js │ │ │ │ ├── foldcode.js │ │ │ │ ├── foldgutter.css │ │ │ │ ├── foldgutter.js │ │ │ │ ├── indent-fold.js │ │ │ │ ├── markdown-fold.js │ │ │ │ └── xml-fold.js │ │ │ ├── hint/ │ │ │ │ ├── anyword-hint.js │ │ │ │ ├── css-hint.js │ │ │ │ ├── html-hint.js │ │ │ │ ├── javascript-hint.js │ │ │ │ ├── show-hint.css │ │ │ │ ├── show-hint.js │ │ │ │ ├── sql-hint.js │ │ │ │ └── xml-hint.js │ │ │ ├── lint/ │ │ │ │ ├── coffeescript-lint.js │ │ │ │ ├── css-lint.js │ │ │ │ ├── html-lint.js │ │ │ │ ├── javascript-lint.js │ │ │ │ ├── json-lint.js │ │ │ │ ├── lint.css │ │ │ │ ├── lint.js │ │ │ │ └── yaml-lint.js │ │ │ ├── merge/ │ │ │ │ ├── merge.css │ │ │ │ └── merge.js │ │ │ ├── mode/ │ │ │ │ ├── loadmode.js │ │ │ │ ├── multiplex.js │ │ │ │ ├── multiplex_test.js │ │ │ │ ├── overlay.js │ │ │ │ └── simple.js │ │ │ ├── runmode/ │ │ │ │ ├── colorize.js │ │ │ │ ├── runmode-standalone.js │ │ │ │ ├── runmode.js │ │ │ │ └── runmode.node.js │ │ │ ├── scroll/ │ │ │ │ ├── annotatescrollbar.js │ │ │ │ ├── scrollpastend.js │ │ │ │ ├── simplescrollbars.css │ │ │ │ └── simplescrollbars.js │ │ │ ├── search/ │ │ │ │ ├── jump-to-line.js │ │ │ │ ├── match-highlighter.js │ │ │ │ ├── matchesonscrollbar.css │ │ │ │ ├── matchesonscrollbar.js │ │ │ │ ├── search.js │ │ │ │ └── searchcursor.js │ │ │ ├── selection/ │ │ │ │ ├── active-line.js │ │ │ │ ├── mark-selection.js │ │ │ │ └── selection-pointer.js │ │ │ ├── tern/ │ │ │ │ ├── tern.css │ │ │ │ ├── tern.js │ │ │ │ └── worker.js │ │ │ └── wrap/ │ │ │ └── hardwrap.js │ │ ├── lib/ │ │ │ ├── codemirror.css │ │ │ └── codemirror.js │ │ ├── mode/ │ │ │ ├── css/ │ │ │ │ ├── css.js │ │ │ │ ├── gss.html │ │ │ │ ├── gss_test.js │ │ │ │ ├── index.html │ │ │ │ ├── less.html │ │ │ │ ├── less_test.js │ │ │ │ ├── scss.html │ │ │ │ ├── scss_test.js │ │ │ │ └── test.js │ │ │ ├── htmlmixed/ │ │ │ │ ├── htmlmixed.js │ │ │ │ └── index.html │ │ │ └── xml/ │ │ │ ├── index.html │ │ │ ├── test.js │ │ │ └── xml.js │ │ └── theme/ │ │ ├── 3024-day.css │ │ ├── 3024-night.css │ │ ├── abbott.css │ │ ├── abcdef.css │ │ ├── ambiance-mobile.css │ │ ├── ambiance.css │ │ ├── ayu-dark.css │ │ ├── ayu-mirage.css │ │ ├── base16-dark.css │ │ ├── base16-light.css │ │ ├── bespin.css │ │ ├── blackboard.css │ │ ├── cobalt.css │ │ ├── colorforth.css │ │ ├── darcula.css │ │ ├── dracula.css │ │ ├── duotone-dark.css │ │ ├── duotone-light.css │ │ ├── eclipse.css │ │ ├── elegant.css │ │ ├── erlang-dark.css │ │ ├── gruvbox-dark.css │ │ ├── hopscotch.css │ │ ├── icecoder.css │ │ ├── idea.css │ │ ├── isotope.css │ │ ├── juejin.css │ │ ├── lesser-dark.css │ │ ├── liquibyte.css │ │ ├── lucario.css │ │ ├── material-darker.css │ │ ├── material-ocean.css │ │ ├── material-palenight.css │ │ ├── material.css │ │ ├── mbo.css │ │ ├── mdn-like.css │ │ ├── midnight.css │ │ ├── monokai.css │ │ ├── moxer.css │ │ ├── neat.css │ │ ├── neo.css │ │ ├── night.css │ │ ├── nord.css │ │ ├── oceanic-next.css │ │ ├── panda-syntax.css │ │ ├── paraiso-dark.css │ │ ├── paraiso-light.css │ │ ├── pastel-on-dark.css │ │ ├── railscasts.css │ │ ├── rubyblue.css │ │ ├── seti.css │ │ ├── shadowfox.css │ │ ├── solarized.css │ │ ├── ssms.css │ │ ├── the-matrix.css │ │ ├── tomorrow-night-bright.css │ │ ├── tomorrow-night-eighties.css │ │ ├── ttcn.css │ │ ├── twilight.css │ │ ├── vibrant-ink.css │ │ ├── xq-dark.css │ │ ├── xq-light.css │ │ ├── yeti.css │ │ ├── yonce.css │ │ └── zenburn.css │ ├── dnd5emonster/ │ │ ├── css/ │ │ │ └── template.css │ │ └── js/ │ │ └── template.js │ ├── fontawesome/ │ │ └── 6.0.0/ │ │ ├── LICENSE.txt │ │ ├── css/ │ │ │ ├── all.css │ │ │ ├── brands.css │ │ │ ├── fontawesome.css │ │ │ ├── regular.css │ │ │ ├── solid.css │ │ │ ├── svg-with-js.css │ │ │ ├── v4-font-face.css │ │ │ ├── v4-shims.css │ │ │ └── v5-font-face.css │ │ ├── js/ │ │ │ ├── all.js │ │ │ ├── brands.js │ │ │ ├── conflict-detection.js │ │ │ ├── fontawesome.js │ │ │ ├── regular.js │ │ │ ├── solid.js │ │ │ └── v4-shims.js │ │ ├── less/ │ │ │ ├── _animated.less │ │ │ ├── _bordered-pulled.less │ │ │ ├── _core.less │ │ │ ├── _fixed-width.less │ │ │ ├── _icons.less │ │ │ ├── _list.less │ │ │ ├── _mixins.less │ │ │ ├── _rotated-flipped.less │ │ │ ├── _screen-reader.less │ │ │ ├── _shims.less │ │ │ ├── _sizing.less │ │ │ ├── _stacked.less │ │ │ ├── _variables.less │ │ │ ├── brands.less │ │ │ ├── fontawesome.less │ │ │ ├── regular.less │ │ │ ├── solid.less │ │ │ └── v4-shims.less │ │ └── scss/ │ │ ├── _animated.scss │ │ ├── _bordered-pulled.scss │ │ ├── _core.scss │ │ ├── _fixed-width.scss │ │ ├── _functions.scss │ │ ├── _icons.scss │ │ ├── _list.scss │ │ ├── _mixins.scss │ │ ├── _rotated-flipped.scss │ │ ├── _screen-reader.scss │ │ ├── _shims.scss │ │ ├── _sizing.scss │ │ ├── _stacked.scss │ │ ├── _variables.scss │ │ ├── brands.scss │ │ ├── fontawesome.scss │ │ ├── regular.scss │ │ ├── solid.scss │ │ └── v4-shims.scss │ ├── laravel-translation-manager/ │ │ ├── css/ │ │ │ ├── index.css │ │ │ └── translations.css │ │ └── js/ │ │ ├── index.js │ │ ├── inflection.js │ │ ├── rails.async.js │ │ ├── rails.js │ │ ├── translations.js │ │ ├── translations_page.js │ │ └── xregexp-all.js │ ├── leaflet/ │ │ ├── leaflet-polyline-measure.js │ │ ├── leaflet.editable.js │ │ ├── leaflet.layerstree.css │ │ ├── leaflet.layerstree.js │ │ ├── leaflet.markercluster.js │ │ ├── leaflet.markercluster.layersupport.js │ │ ├── leaflet.path.drag.js │ │ ├── leaflet.ruler-kanka.js │ │ ├── leaflet.ruler.js │ │ ├── leaflet.zoomcss.js │ │ └── leaflet.zoomdisplay.js │ ├── summernote/ │ │ ├── 0.9.1/ │ │ │ ├── font/ │ │ │ │ └── summernote.hash │ │ │ ├── lang/ │ │ │ │ ├── summernote-ar-AR.js │ │ │ │ ├── summernote-az-AZ.js │ │ │ │ ├── summernote-bg-BG.js │ │ │ │ ├── summernote-bn-BD.js │ │ │ │ ├── summernote-ca-ES.js │ │ │ │ ├── summernote-cs-CZ.js │ │ │ │ ├── summernote-da-DK.js │ │ │ │ ├── summernote-de-CH.js │ │ │ │ ├── summernote-de-DE.js │ │ │ │ ├── summernote-el-GR.js │ │ │ │ ├── summernote-en-US.js │ │ │ │ ├── summernote-es-ES.js │ │ │ │ ├── summernote-es-EU.js │ │ │ │ ├── summernote-fa-IR.js │ │ │ │ ├── summernote-fi-FI.js │ │ │ │ ├── summernote-fr-FR.js │ │ │ │ ├── summernote-gl-ES.js │ │ │ │ ├── summernote-he-IL.js │ │ │ │ ├── summernote-hr-HR.js │ │ │ │ ├── summernote-hu-HU.js │ │ │ │ ├── summernote-id-ID.js │ │ │ │ ├── summernote-it-IT.js │ │ │ │ ├── summernote-ja-JP.js │ │ │ │ ├── summernote-ko-KR.js │ │ │ │ ├── summernote-lt-LT.js │ │ │ │ ├── summernote-lt-LV.js │ │ │ │ ├── summernote-mn-MN.js │ │ │ │ ├── summernote-nb-NO.js │ │ │ │ ├── summernote-nl-NL.js │ │ │ │ ├── summernote-pl-PL.js │ │ │ │ ├── summernote-pt-BR.js │ │ │ │ ├── summernote-pt-PT.js │ │ │ │ ├── summernote-ro-RO.js │ │ │ │ ├── summernote-ru-RU.js │ │ │ │ ├── summernote-sk-SK.js │ │ │ │ ├── summernote-sl-SI.js │ │ │ │ ├── summernote-sr-RS-Latin.js │ │ │ │ ├── summernote-sr-RS.js │ │ │ │ ├── summernote-sv-SE.js │ │ │ │ ├── summernote-ta-IN.js │ │ │ │ ├── summernote-th-TH.js │ │ │ │ ├── summernote-tr-TR.js │ │ │ │ ├── summernote-uk-UA.js │ │ │ │ ├── summernote-uz-UZ.js │ │ │ │ ├── summernote-vi-VN.js │ │ │ │ ├── summernote-zh-CN.js │ │ │ │ └── summernote-zh-TW.js │ │ │ ├── plugin/ │ │ │ │ ├── databasic/ │ │ │ │ │ ├── summernote-ext-databasic.css │ │ │ │ │ └── summernote-ext-databasic.js │ │ │ │ ├── hello/ │ │ │ │ │ └── summernote-ext-hello.js │ │ │ │ └── specialchars/ │ │ │ │ └── summernote-ext-specialchars.js │ │ │ ├── summernote-bs4.css │ │ │ ├── summernote-bs4.js │ │ │ ├── summernote-bs5.css │ │ │ ├── summernote-bs5.js │ │ │ ├── summernote-lite.css │ │ │ ├── summernote-lite.js │ │ │ ├── summernote.css │ │ │ └── summernote.js │ │ ├── lang/ │ │ │ ├── summernote-ar-AR.js │ │ │ ├── summernote-ar-AR.min.js.LICENSE.txt │ │ │ ├── summernote-az-AZ.js │ │ │ ├── summernote-az-AZ.min.js.LICENSE.txt │ │ │ ├── summernote-bg-BG.js │ │ │ ├── summernote-bg-BG.min.js.LICENSE.txt │ │ │ ├── summernote-ca-ES.js │ │ │ ├── summernote-ca-ES.min.js.LICENSE.txt │ │ │ ├── summernote-cs-CZ.js │ │ │ ├── summernote-cs-CZ.min.js.LICENSE.txt │ │ │ ├── summernote-da-DK.js │ │ │ ├── summernote-da-DK.min.js.LICENSE.txt │ │ │ ├── summernote-de-DE.js │ │ │ ├── summernote-de-DE.min.js.LICENSE.txt │ │ │ ├── summernote-el-GR.js │ │ │ ├── summernote-el-GR.min.js.LICENSE.txt │ │ │ ├── summernote-es-ES.js │ │ │ ├── summernote-es-ES.min.js.LICENSE.txt │ │ │ ├── summernote-es-EU.js │ │ │ ├── summernote-es-EU.min.js.LICENSE.txt │ │ │ ├── summernote-fa-IR.js │ │ │ ├── summernote-fa-IR.min.js.LICENSE.txt │ │ │ ├── summernote-fi-FI.js │ │ │ ├── summernote-fi-FI.min.js.LICENSE.txt │ │ │ ├── summernote-fr-FR.js │ │ │ ├── summernote-fr-FR.min.js.LICENSE.txt │ │ │ ├── summernote-gl-ES.js │ │ │ ├── summernote-gl-ES.min.js.LICENSE.txt │ │ │ ├── summernote-he-IL.js │ │ │ ├── summernote-he-IL.min.js.LICENSE.txt │ │ │ ├── summernote-hr-HR.js │ │ │ ├── summernote-hr-HR.min.js.LICENSE.txt │ │ │ ├── summernote-hu-HU.js │ │ │ ├── summernote-hu-HU.min.js.LICENSE.txt │ │ │ ├── summernote-id-ID.js │ │ │ ├── summernote-id-ID.min.js.LICENSE.txt │ │ │ ├── summernote-it-IT.js │ │ │ ├── summernote-it-IT.min.js.LICENSE.txt │ │ │ ├── summernote-ja-JP.js │ │ │ ├── summernote-ja-JP.min.js.LICENSE.txt │ │ │ ├── summernote-ko-KR.js │ │ │ ├── summernote-ko-KR.min.js.LICENSE.txt │ │ │ ├── summernote-lt-LT.js │ │ │ ├── summernote-lt-LT.min.js.LICENSE.txt │ │ │ ├── summernote-lt-LV.js │ │ │ ├── summernote-lt-LV.min.js.LICENSE.txt │ │ │ ├── summernote-mn-MN.js │ │ │ ├── summernote-mn-MN.min.js.LICENSE.txt │ │ │ ├── summernote-nb-NO.js │ │ │ ├── summernote-nb-NO.min.js.LICENSE.txt │ │ │ ├── summernote-nl-NL.js │ │ │ ├── summernote-nl-NL.min.js.LICENSE.txt │ │ │ ├── summernote-pl-PL.js │ │ │ ├── summernote-pl-PL.min.js.LICENSE.txt │ │ │ ├── summernote-pt-BR.js │ │ │ ├── summernote-pt-BR.min.js.LICENSE.txt │ │ │ ├── summernote-pt-PT.js │ │ │ ├── summernote-pt-PT.min.js.LICENSE.txt │ │ │ ├── summernote-ro-RO.js │ │ │ ├── summernote-ro-RO.min.js.LICENSE.txt │ │ │ ├── summernote-ru-RU.js │ │ │ ├── summernote-ru-RU.min.js.LICENSE.txt │ │ │ ├── summernote-sk-SK.js │ │ │ ├── summernote-sk-SK.min.js.LICENSE.txt │ │ │ ├── summernote-sl-SI.js │ │ │ ├── summernote-sl-SI.min.js.LICENSE.txt │ │ │ ├── summernote-sr-RS-Latin.js │ │ │ ├── summernote-sr-RS-Latin.min.js.LICENSE.txt │ │ │ ├── summernote-sr-RS.js │ │ │ ├── summernote-sr-RS.min.js.LICENSE.txt │ │ │ ├── summernote-sv-SE.js │ │ │ ├── summernote-sv-SE.min.js.LICENSE.txt │ │ │ ├── summernote-ta-IN.js │ │ │ ├── summernote-ta-IN.min.js.LICENSE.txt │ │ │ ├── summernote-th-TH.js │ │ │ ├── summernote-th-TH.min.js.LICENSE.txt │ │ │ ├── summernote-tr-TR.js │ │ │ ├── summernote-tr-TR.min.js.LICENSE.txt │ │ │ ├── summernote-uk-UA.js │ │ │ ├── summernote-uk-UA.min.js.LICENSE.txt │ │ │ ├── summernote-uz-UZ.js │ │ │ ├── summernote-uz-UZ.min.js.LICENSE.txt │ │ │ ├── summernote-vi-VN.js │ │ │ ├── summernote-vi-VN.min.js.LICENSE.txt │ │ │ ├── summernote-zh-CN.js │ │ │ ├── summernote-zh-CN.min.js.LICENSE.txt │ │ │ ├── summernote-zh-TW.js │ │ │ └── summernote-zh-TW.min.js.LICENSE.txt │ │ ├── plugin/ │ │ │ ├── databasic/ │ │ │ │ ├── summernote-ext-databasic.css │ │ │ │ └── summernote-ext-databasic.js │ │ │ ├── embed/ │ │ │ │ └── summernote-embed-plugin.js │ │ │ ├── hello/ │ │ │ │ └── summernote-ext-hello.js │ │ │ ├── rtl/ │ │ │ │ └── summernote-ext-rtl.js │ │ │ ├── specialchars/ │ │ │ │ └── summernote-ext-specialchars.js │ │ │ ├── summernote-aroba-kanka/ │ │ │ │ └── summernote-aroba.js │ │ │ ├── summernote-image-attribute.js │ │ │ ├── summernote-table-ext.js │ │ │ ├── summernote-table-headers/ │ │ │ │ ├── Example/ │ │ │ │ │ └── example.html │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ └── summernote-table-headers.js │ │ │ ├── summernote-table-styles/ │ │ │ │ ├── Example/ │ │ │ │ │ └── example.html │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ └── summernote-table-styles.js │ │ │ ├── summernote-toc-kanka/ │ │ │ │ └── summernote-toc.js │ │ │ └── summernote-toc.js │ │ ├── summernote-bs4.css │ │ ├── summernote-bs4.js │ │ ├── summernote-bs4.min.js.LICENSE.txt │ │ ├── summernote-lite.css │ │ ├── summernote-lite.js │ │ ├── summernote-lite.min.js.LICENSE.txt │ │ ├── summernote.css │ │ ├── summernote.js │ │ └── summernote.min.js.LICENSE.txt │ └── telescope/ │ ├── app-dark.css │ ├── app.css │ ├── app.js │ └── mix-manifest.json ├── resources/ │ ├── api-docs/ │ │ └── 1.0/ │ │ ├── abilities.md │ │ ├── archives.md │ │ ├── attribute-templates.md │ │ ├── bookmarks.md │ │ ├── calendar-weathers.md │ │ ├── calendars.md │ │ ├── campaigns/ │ │ │ ├── applications.md │ │ │ ├── categories.md │ │ │ ├── dashboard-widgets.md │ │ │ ├── default-thumbnails.md │ │ │ ├── images.md │ │ │ ├── members.md │ │ │ ├── modules.md │ │ │ ├── roles.md │ │ │ ├── statuses.md │ │ │ └── styles.md │ │ ├── campaigns.md │ │ ├── characters.md │ │ ├── conversations.md │ │ ├── creatures.md │ │ ├── dice-rolls.md │ │ ├── entities/ │ │ │ ├── attributes.md │ │ │ ├── connections.md │ │ │ ├── entity-abilities.md │ │ │ ├── entity-aliases.md │ │ │ ├── entity-assets.md │ │ │ ├── entity-files.md │ │ │ ├── entity-image.md │ │ │ ├── entity-inventory.md │ │ │ ├── entity-links.md │ │ │ ├── entity-mentions.md │ │ │ ├── entity-permissions.md │ │ │ ├── entity-tags.md │ │ │ ├── entity-types.md │ │ │ ├── posts.md │ │ │ ├── reminders.md │ │ │ └── templates.md │ │ ├── entities.md │ │ ├── events.md │ │ ├── families.md │ │ ├── index.md │ │ ├── items.md │ │ ├── journals.md │ │ ├── locations.md │ │ ├── map_groups.md │ │ ├── map_layers.md │ │ ├── map_markers.md │ │ ├── maps.md │ │ ├── misc/ │ │ │ ├── filters.md │ │ │ ├── last-sync.md │ │ │ ├── pagination.md │ │ │ ├── permissions-test.md │ │ │ └── visibilities.md │ │ ├── notes.md │ │ ├── organisation-members.md │ │ ├── organisations.md │ │ ├── overview.md │ │ ├── post-layout.md │ │ ├── profile.md │ │ ├── quests.md │ │ ├── races.md │ │ ├── relations.md │ │ ├── search.md │ │ ├── setup.md │ │ ├── tags.md │ │ ├── timeline-elements.md │ │ ├── timeline-eras.md │ │ ├── timelines.md │ │ └── troubleshooting.md │ ├── assets/ │ │ └── components/ │ │ └── rpg/ │ │ └── scss/ │ │ ├── .scss-lint.yml │ │ ├── _bordered-pulled.scss │ │ ├── _core.scss │ │ ├── _fixed-width.scss │ │ ├── _icons.scss │ │ ├── _larger.scss │ │ ├── _list.scss │ │ ├── _mixins.scss │ │ ├── _path.scss │ │ ├── _rotated-flipped.scss │ │ ├── _spinning.scss │ │ ├── _stacked.scss │ │ ├── _variables.scss │ │ └── rpg-awesome.scss │ ├── css/ │ │ ├── alerts.css │ │ ├── app.css │ │ ├── attributes/ │ │ │ └── attributes.css │ │ ├── auth.css │ │ ├── badge.css │ │ ├── buttons.css │ │ ├── calendar.css │ │ ├── campaign.css │ │ ├── code.css │ │ ├── dashboard.css │ │ ├── entity.css │ │ ├── families/ │ │ │ └── tree.css │ │ ├── freyja/ │ │ │ ├── freyja.css │ │ │ ├── header.css │ │ │ └── sidebar.css │ │ ├── front.css │ │ ├── html/ │ │ │ ├── dialog.css │ │ │ ├── dl.css │ │ │ ├── summary.css │ │ │ └── table.css │ │ ├── maps/ │ │ │ ├── leaflet.zoomdisplay.css │ │ │ └── maps.css │ │ ├── mobile.css │ │ ├── premium.css │ │ ├── print/ │ │ │ ├── general.css │ │ │ └── print.css │ │ ├── quest.css │ │ ├── quick-creator.css │ │ ├── range.css │ │ ├── relations.css │ │ ├── sortable.css │ │ ├── subscription.css │ │ ├── tabs.css │ │ ├── themes/ │ │ │ ├── base.css │ │ │ ├── colour.css │ │ │ ├── dark.css │ │ │ ├── light.css │ │ │ └── midnight.css │ │ ├── timeline.css │ │ ├── toast.css │ │ ├── toggle.css │ │ ├── tooltip.css │ │ ├── typography.css │ │ ├── vendor.css │ │ └── vendors/ │ │ ├── adminlte.css │ │ ├── editor.css │ │ └── tinymce.css │ ├── js/ │ │ ├── abilities.js │ │ ├── ads.js │ │ ├── animations.js │ │ ├── app.js │ │ ├── attributes-manager.js │ │ ├── attributes.js │ │ ├── auth.js │ │ ├── banner.js │ │ ├── billing.js │ │ ├── bookmarks.js │ │ ├── calendar.js │ │ ├── campaign.js │ │ ├── campaigns/ │ │ │ ├── import.js │ │ │ └── theme-builder.js │ │ ├── clipboard.js │ │ ├── components/ │ │ │ ├── Dropdown.vue │ │ │ ├── abilities/ │ │ │ │ ├── Abilities.vue │ │ │ │ ├── Ability.vue │ │ │ │ └── Parent.vue │ │ │ ├── attributes/ │ │ │ │ ├── Attribute.vue │ │ │ │ ├── Form.vue │ │ │ │ ├── Manager.vue │ │ │ │ └── MentionField.vue │ │ │ ├── connections/ │ │ │ │ └── Web.vue │ │ │ ├── conversation/ │ │ │ │ ├── Conversation.vue │ │ │ │ ├── Form.vue │ │ │ │ ├── Message.vue │ │ │ │ └── Messages.vue │ │ │ ├── delete-confirm.js │ │ │ ├── families/ │ │ │ │ ├── ChildrenLine.vue │ │ │ │ ├── FamilyChildren.vue │ │ │ │ ├── FamilyEntity.vue │ │ │ │ ├── FamilyNode.vue │ │ │ │ ├── FamilyParentChildrenLine.vue │ │ │ │ ├── FamilyRelation.vue │ │ │ │ ├── FamilyRelations.vue │ │ │ │ ├── FamilyTree.vue │ │ │ │ └── RelationLine.vue │ │ │ ├── fields/ │ │ │ │ ├── AliasPill.vue │ │ │ │ ├── EntityName.vue │ │ │ │ └── SimilarEntityAlert.vue │ │ │ ├── icons/ │ │ │ │ └── GridSvg.vue │ │ │ ├── layout/ │ │ │ │ ├── Campaign.vue │ │ │ │ ├── Lookup/ │ │ │ │ │ ├── EntityPreview.vue │ │ │ │ │ ├── LookupEntity.vue │ │ │ │ │ └── LookupPage.vue │ │ │ │ ├── NavSearch.vue │ │ │ │ ├── NavSwitcher.vue │ │ │ │ ├── NavToggler.vue │ │ │ │ ├── Notification.vue │ │ │ │ └── Release.vue │ │ │ ├── select2.js │ │ │ ├── subscription/ │ │ │ │ └── BillingManagement.vue │ │ │ └── whiteboards/ │ │ │ ├── Entity.vue │ │ │ ├── EntitySearch.vue │ │ │ ├── Reset.vue │ │ │ ├── Settings.vue │ │ │ └── Whiteboard.vue │ │ ├── composables/ │ │ │ └── useEntitySimilarity.js │ │ ├── connections/ │ │ │ └── web.js │ │ ├── conversation.js │ │ ├── cookieconsent.js │ │ ├── crud.js │ │ ├── dashboard.js │ │ ├── dashboards/ │ │ │ ├── onboarding/ │ │ │ │ ├── Onboarding.vue │ │ │ │ └── onboarding.js │ │ │ └── widgets/ │ │ │ └── getting-started/ │ │ │ └── GettingStarted.vue │ │ ├── datagrids.js │ │ ├── datagrids2.js │ │ ├── echo.js │ │ ├── editors/ │ │ │ ├── summernote.js │ │ │ └── tiptap/ │ │ │ ├── SourceEditor.vue │ │ │ ├── Tiptap.vue │ │ │ ├── bubblemenus/ │ │ │ │ ├── ColorPicker.vue │ │ │ │ ├── ImageBubbleMenu.vue │ │ │ │ ├── LinkBubbleMenu.vue │ │ │ │ ├── MentionBubbleMenu.vue │ │ │ │ ├── TableBubbleMenu.vue │ │ │ │ └── TextBubbleMenu.vue │ │ │ ├── extensions/ │ │ │ │ ├── CustomHeading.ts │ │ │ │ ├── CustomImage.ts │ │ │ │ ├── Details.ts │ │ │ │ ├── DetailsWrapper.vue │ │ │ │ ├── Div.ts │ │ │ │ ├── Iframe.ts │ │ │ │ ├── gallery/ │ │ │ │ │ ├── Gallery.ts │ │ │ │ │ └── GalleryDialog.vue │ │ │ │ ├── images/ │ │ │ │ │ ├── Image.ts │ │ │ │ │ └── Images.vue │ │ │ │ ├── mentions/ │ │ │ │ │ ├── Mention.ts │ │ │ │ │ ├── MentionList.vue │ │ │ │ │ ├── MentionParser.ts │ │ │ │ │ └── suggestion.ts │ │ │ │ ├── slashcommand/ │ │ │ │ │ ├── SlashCommand.ts │ │ │ │ │ ├── SlashCommandList.vue │ │ │ │ │ └── suggestion.ts │ │ │ │ └── table/ │ │ │ │ ├── CustomTableCell.ts │ │ │ │ ├── CustomTableHeader.ts │ │ │ │ └── TableWithControls.ts │ │ │ ├── index.js │ │ │ ├── toolbar/ │ │ │ │ └── Button.vue │ │ │ └── utils.ts │ │ ├── entities/ │ │ │ ├── EntityAdSlot.vue │ │ │ ├── EntityCard.vue │ │ │ ├── EntityGrid.vue │ │ │ ├── EntityListing.vue │ │ │ ├── EntityRow.vue │ │ │ ├── EntityTable.vue │ │ │ ├── composables/ │ │ │ │ ├── useBulkActions.ts │ │ │ │ ├── useColumns.ts │ │ │ │ ├── useEntityApi.ts │ │ │ │ ├── useLayout.ts │ │ │ │ ├── useLongPress.ts │ │ │ │ ├── useNesting.ts │ │ │ │ ├── useOrdering.ts │ │ │ │ └── usePerPage.ts │ │ │ └── explore.js │ │ ├── entities.js │ │ ├── events.js │ │ ├── family-tree-vue.js │ │ ├── forms/ │ │ │ ├── calendar-date.js │ │ │ ├── calendar.js │ │ │ ├── character.js │ │ │ └── entity-name.js │ │ ├── front.js │ │ ├── gallery/ │ │ │ ├── Browser.vue │ │ │ ├── File.vue │ │ │ ├── Gallery.vue │ │ │ ├── Preview.vue │ │ │ ├── Selection.vue │ │ │ ├── gallery.js │ │ │ └── selection.js │ │ ├── header.js │ │ ├── history.js │ │ ├── keep-alive.js │ │ ├── keyboard.js │ │ ├── location/ │ │ │ └── map-v3.js │ │ ├── maintenance.js │ │ ├── members.js │ │ ├── post.js │ │ ├── profile.js │ │ ├── quick-creator.js │ │ ├── recovery/ │ │ │ ├── Element.vue │ │ │ ├── Recovery.vue │ │ │ └── recovery.js │ │ ├── relations.js │ │ ├── settings.js │ │ ├── share.js │ │ ├── story.js │ │ ├── subscription.js │ │ ├── tags.js │ │ ├── timelines.js │ │ ├── toast.js │ │ ├── utility/ │ │ │ ├── CampaignShareModal.vue │ │ │ ├── EntityShareModal.vue │ │ │ ├── colour-picker.js │ │ │ ├── colours.ts │ │ │ ├── dialog.js │ │ │ ├── formError.js │ │ │ ├── sortable.js │ │ │ └── tippy.js │ │ ├── vendor-final.js │ │ ├── vendor.js │ │ ├── visibility-picker.js │ │ ├── webhooks.js │ │ └── whiteboards.js │ ├── vendor/ │ │ └── tinymce/ │ │ ├── langs/ │ │ │ ├── ca.js │ │ │ ├── de.js │ │ │ ├── es.js │ │ │ ├── fr.js │ │ │ ├── he.js │ │ │ ├── hr.js │ │ │ ├── hu.js │ │ │ ├── it.js │ │ │ ├── nl.js │ │ │ ├── pt-BR.js │ │ │ ├── readme.md │ │ │ ├── ru.js │ │ │ └── sk.js │ │ └── plugins/ │ │ └── mention/ │ │ ├── .gitignore │ │ ├── .jshintrc │ │ ├── .travis.yml │ │ ├── README.md │ │ ├── bower.json │ │ ├── css/ │ │ │ ├── autocomplete.css │ │ │ └── rte-content.css │ │ ├── examples/ │ │ │ └── commonjs/ │ │ │ ├── .gitignore │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ ├── package.json │ │ │ └── webpack.config.js │ │ ├── gulpfile.js │ │ ├── mention/ │ │ │ └── plugin.js │ │ ├── package.json │ │ ├── plugin.js │ │ └── tests/ │ │ ├── test_mention.js │ │ └── test_runner.html │ └── views/ │ ├── abilities/ │ │ ├── abilities.blade.php │ │ ├── entities/ │ │ │ ├── _form.blade.php │ │ │ ├── actions/ │ │ │ │ └── delete.blade.php │ │ │ └── create.blade.php │ │ ├── entities.blade.php │ │ ├── form/ │ │ │ └── _entry.blade.php │ │ ├── panels/ │ │ │ ├── abilities.blade.php │ │ │ └── entities.blade.php │ │ └── show.blade.php │ ├── account/ │ │ ├── billing/ │ │ │ └── information/ │ │ │ ├── _form.blade.php │ │ │ └── form.blade.php │ │ ├── email/ │ │ │ ├── _form.blade.php │ │ │ └── form.blade.php │ │ ├── password/ │ │ │ ├── _form.blade.php │ │ │ └── form.blade.php │ │ └── social/ │ │ └── form.blade.php │ ├── ads/ │ │ ├── anchor.blade.php │ │ ├── cta.blade.php │ │ ├── inline.blade.php │ │ ├── nitro/ │ │ │ └── styles.blade.php │ │ ├── siderail_left.blade.php │ │ ├── siderail_right.blade.php │ │ ├── table.blade.php │ │ ├── top.blade.php │ │ └── video.blade.php │ ├── attribute_templates/ │ │ ├── datagrid.blade.php │ │ ├── form/ │ │ │ └── _entry.blade.php │ │ └── show.blade.php │ ├── auth/ │ │ ├── login.blade.php │ │ ├── otp.blade.php │ │ ├── passwords/ │ │ │ ├── confirm.blade.php │ │ │ ├── email.blade.php │ │ │ └── reset.blade.php │ │ └── register.blade.php │ ├── billing/ │ │ ├── history.blade.php │ │ └── payment-method.blade.php │ ├── bookmarks/ │ │ ├── datagrid.blade.php │ │ ├── forms/ │ │ │ ├── _dashboard.blade.php │ │ │ ├── _entity.blade.php │ │ │ ├── _entry.blade.php │ │ │ ├── _random.blade.php │ │ │ ├── _type.blade.php │ │ │ ├── create.blade.php │ │ │ └── edit.blade.php │ │ └── reorder.blade.php │ ├── calendars/ │ │ ├── _calendar.blade.php │ │ ├── _day.blade.php │ │ ├── _intercalary.blade.php │ │ ├── _week.blade.php │ │ ├── events.blade.php │ │ ├── form/ │ │ │ ├── _calendar.blade.php │ │ │ ├── _entry.blade.php │ │ │ ├── _months.blade.php │ │ │ ├── _moons.blade.php │ │ │ ├── _panes.blade.php │ │ │ ├── _seasons.blade.php │ │ │ ├── _tabs.blade.php │ │ │ └── _weeks.blade.php │ │ ├── panels/ │ │ │ └── events.blade.php │ │ ├── reminders/ │ │ │ ├── _entity_form.blade.php │ │ │ ├── _form.blade.php │ │ │ ├── _subform.blade.php │ │ │ ├── create.blade.php │ │ │ ├── create_from_entity.blade.php │ │ │ └── edit.blade.php │ │ ├── show.blade.php │ │ ├── weather/ │ │ │ ├── _form.blade.php │ │ │ ├── create.blade.php │ │ │ └── edit.blade.php │ │ └── year-switcher/ │ │ └── _footer.blade.php │ ├── campaigns/ │ │ ├── _overview.blade.php │ │ ├── achievements/ │ │ │ ├── _finished.blade.php │ │ │ ├── _locked.blade.php │ │ │ └── index.blade.php │ │ ├── applications/ │ │ │ ├── _apply.blade.php │ │ │ ├── _list.blade.php │ │ │ ├── _requirements.blade.php │ │ │ ├── _toggle.blade.php │ │ │ ├── _toggle_form.blade.php │ │ │ ├── _view.blade.php │ │ │ ├── apply.blade.php │ │ │ ├── dashboard_widget.blade.php │ │ │ ├── edit.blade.php │ │ │ ├── index.blade.php │ │ │ ├── setup.blade.php │ │ │ ├── show.blade.php │ │ │ └── view.blade.php │ │ ├── default-images/ │ │ │ ├── _form.blade.php │ │ │ ├── _thumbnail.blade.php │ │ │ ├── create.blade.php │ │ │ └── index.blade.php │ │ ├── defaults/ │ │ │ └── index.blade.php │ │ ├── delete.blade.php │ │ ├── entity-types/ │ │ │ ├── _actions.blade.php │ │ │ ├── _form.blade.php │ │ │ ├── box/ │ │ │ │ ├── custom.blade.php │ │ │ │ ├── default.blade.php │ │ │ │ └── new.blade.php │ │ │ ├── confirm.blade.php │ │ │ ├── create.blade.php │ │ │ ├── edit.blade.php │ │ │ ├── max-reached.blade.php │ │ │ └── not-premium.blade.php │ │ ├── export.blade.php │ │ ├── forms/ │ │ │ ├── _tabs.blade.php │ │ │ ├── _visibility.blade.php │ │ │ ├── create.blade.php │ │ │ ├── dashboard-header/ │ │ │ │ ├── _form.blade.php │ │ │ │ └── edit.blade.php │ │ │ ├── edit.blade.php │ │ │ ├── modals/ │ │ │ │ ├── _image.blade.php │ │ │ │ ├── _visibility-form.blade.php │ │ │ │ ├── image.blade.php │ │ │ │ └── visibility.blade.php │ │ │ ├── panes/ │ │ │ │ ├── _discovery.blade.php │ │ │ │ ├── dashboard.blade.php │ │ │ │ ├── entry.blade.php │ │ │ │ ├── public.blade.php │ │ │ │ └── ui.blade.php │ │ │ └── standard.blade.php │ │ ├── import/ │ │ │ ├── index.blade.php │ │ │ └── process-csv.blade.php │ │ ├── invites/ │ │ │ ├── _form.blade.php │ │ │ └── create.blade.php │ │ ├── leave/ │ │ │ ├── _actions.blade.php │ │ │ └── _body.blade.php │ │ ├── leave.blade.php │ │ ├── logs/ │ │ │ ├── _list.blade.php │ │ │ └── index.blade.php │ │ ├── markdown.blade.php │ │ ├── members/ │ │ │ ├── _form.blade.php │ │ │ ├── _invites.blade.php │ │ │ ├── delete.blade.php │ │ │ ├── index.blade.php │ │ │ └── update.blade.php │ │ ├── modules/ │ │ │ ├── _custom.blade.php │ │ │ ├── _default.blade.php │ │ │ ├── _features.blade.php │ │ │ ├── _form.blade.php │ │ │ ├── box.blade.php │ │ │ ├── edit.blade.php │ │ │ ├── index.blade.php │ │ │ └── not-premium.blade.php │ │ ├── plugins/ │ │ │ ├── confirm.blade.php │ │ │ ├── index.blade.php │ │ │ └── info.blade.php │ │ ├── plugins.blade.php │ │ ├── recovery/ │ │ │ └── index.blade.php │ │ ├── roles/ │ │ │ ├── _form.blade.php │ │ │ ├── _members.blade.php │ │ │ ├── _pretty.blade.php │ │ │ ├── _public.blade.php │ │ │ ├── create.blade.php │ │ │ ├── edit.blade.php │ │ │ ├── index.blade.php │ │ │ ├── rows/ │ │ │ │ └── permissions.blade.php │ │ │ ├── show.blade.php │ │ │ └── users/ │ │ │ ├── _form.blade.php │ │ │ └── create.blade.php │ │ ├── roles.blade.php │ │ ├── share/ │ │ │ └── setup.blade.php │ │ ├── show.blade.php │ │ ├── sidebar/ │ │ │ └── index.blade.php │ │ ├── stats/ │ │ │ └── index.blade.php │ │ ├── styles/ │ │ │ ├── _form-footer.blade.php │ │ │ ├── _form.blade.php │ │ │ ├── _preview.blade.php │ │ │ ├── _reorder.blade.php │ │ │ ├── builder.blade.php │ │ │ ├── create.blade.php │ │ │ ├── edit.blade.php │ │ │ ├── index.blade.php │ │ │ └── theme.blade.php │ │ ├── webhooks/ │ │ │ ├── _form.blade.php │ │ │ ├── create.blade.php │ │ │ ├── edit.blade.php │ │ │ └── index.blade.php │ │ └── webhooks.blade.php │ ├── characters/ │ │ ├── families/ │ │ │ ├── _reorder.blade.php │ │ │ └── reorder.blade.php │ │ ├── form/ │ │ │ ├── _entry.blade.php │ │ │ ├── _organisations.blade.php │ │ │ ├── _panes.blade.php │ │ │ ├── _tabs.blade.php │ │ │ └── _traits.blade.php │ │ ├── organisations/ │ │ │ ├── _form.blade.php │ │ │ ├── create.blade.php │ │ │ └── edit.blade.php │ │ ├── organisations.blade.php │ │ ├── panels/ │ │ │ ├── _appearance.blade.php │ │ │ ├── _buttons.blade.php │ │ │ ├── _personality.blade.php │ │ │ └── organisations.blade.php │ │ └── races/ │ │ ├── _reorder.blade.php │ │ └── reorder.blade.php │ ├── components/ │ │ ├── ad.blade.php │ │ ├── ads/ │ │ │ └── native.blade.php │ │ ├── alert.blade.php │ │ ├── badge.blade.php │ │ ├── box/ │ │ │ └── footer.blade.php │ │ ├── box.blade.php │ │ ├── button/ │ │ │ └── delete-confirm.blade.php │ │ ├── buttons/ │ │ │ ├── confirm-delete.blade.php │ │ │ └── confirm.blade.php │ │ ├── campaigns/ │ │ │ └── module-box.blade.php │ │ ├── character-sheet.blade.php │ │ ├── checkbox.blade.php │ │ ├── dashboards/ │ │ │ └── widgets/ │ │ │ └── selection.blade.php │ │ ├── date.blade.php │ │ ├── dialog/ │ │ │ ├── article.blade.php │ │ │ ├── close.blade.php │ │ │ ├── footer.blade.php │ │ │ └── header.blade.php │ │ ├── dialog.blade.php │ │ ├── dropdowns/ │ │ │ ├── divider.blade.php │ │ │ ├── item.blade.php │ │ │ └── section.blade.php │ │ ├── entities/ │ │ │ ├── submenu.blade.php │ │ │ └── thumbnail.blade.php │ │ ├── entity-link.blade.php │ │ ├── faq-element.blade.php │ │ ├── form/ │ │ │ ├── abilities.blade.php │ │ │ ├── characters.blade.php │ │ │ ├── entity_types.blade.php │ │ │ ├── families.blade.php │ │ │ ├── family_members.blade.php │ │ │ ├── genres.blade.php │ │ │ ├── locations.blade.php │
Showing preview only (2,380K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (25518 symbols across 2348 files)
FILE: app/Auth/PassportTokenGuard.php
class PassportTokenGuard (line 17) | class PassportTokenGuard extends TokenGuard
method authenticateViaBearerToken (line 19) | protected function authenticateViaBearerToken(): ?Authenticatable
FILE: app/Console/Commands/Campaigns/CleanupCommand.php
class CleanupCommand (line 11) | class CleanupCommand extends Command
method __construct (line 27) | public function __construct(protected PurgeService $service)
method handle (line 35) | public function handle()
FILE: app/Console/Commands/Campaigns/DeleteCommand.php
class DeleteCommand (line 10) | class DeleteCommand extends Command
method __construct (line 31) | public function __construct()
method handle (line 41) | public function handle()
FILE: app/Console/Commands/Campaigns/DummyEntities.php
class DummyEntities (line 44) | class DummyEntities extends Command
method __construct (line 65) | public function __construct()
method handle (line 75) | public function handle()
method loadObservers (line 266) | private function loadObservers(Campaign $campaign)
FILE: app/Console/Commands/Campaigns/ExportCommand.php
class ExportCommand (line 11) | class ExportCommand extends Command
method __construct (line 27) | public function __construct(protected ExportService $service)
method handle (line 35) | public function handle()
FILE: app/Console/Commands/Campaigns/ImportCommand.php
class ImportCommand (line 11) | class ImportCommand extends Command
method handle (line 30) | public function handle()
FILE: app/Console/Commands/Campaigns/PermissionsSyncCommand.php
class PermissionsSyncCommand (line 11) | class PermissionsSyncCommand extends Command
method handle (line 30) | public function handle(): int
FILE: app/Console/Commands/Campaigns/PopulateCommand.php
class PopulateCommand (line 10) | class PopulateCommand extends Command
method __construct (line 28) | public function __construct(StarterService $starterService)
method handle (line 37) | public function handle()
FILE: app/Console/Commands/Campaigns/VisibileEntityCountCommand.php
class VisibileEntityCountCommand (line 10) | class VisibileEntityCountCommand extends Command
method __construct (line 36) | public function __construct(protected VisibleEntityCountService $count...
method handle (line 44) | public function handle(): void
FILE: app/Console/Commands/Cleanup/AnonymiseUserLogs.php
class AnonymiseUserLogs (line 9) | class AnonymiseUserLogs extends Command
method __construct (line 32) | public function __construct(protected UserLogService $service)
method handle (line 40) | public function handle()
FILE: app/Console/Commands/Cleanup/CleanupEntityLogs.php
class CleanupEntityLogs (line 11) | class CleanupEntityLogs extends Command
method __construct (line 37) | public function __construct()
method handle (line 45) | public function handle()
FILE: app/Console/Commands/Cleanup/CleanupImages.php
class CleanupImages (line 10) | class CleanupImages extends Command
method handle (line 35) | public function handle()
FILE: app/Console/Commands/Cleanup/CleanupTrashed.php
class CleanupTrashed (line 15) | class CleanupTrashed extends Command
method __construct (line 45) | public function __construct(PurgeService $service, PostPurgeService $p...
method handle (line 55) | public function handle()
FILE: app/Console/Commands/Cleanup/CleanupTrashedCampaigns.php
class CleanupTrashedCampaigns (line 11) | class CleanupTrashedCampaigns extends Command
method __construct (line 34) | public function __construct(protected PurgeService $service)
method handle (line 42) | public function handle()
FILE: app/Console/Commands/Cleanup/CleanupUsers.php
class CleanupUsers (line 9) | class CleanupUsers extends Command
method __construct (line 25) | public function __construct(protected PurgeService $service)
method handle (line 33) | public function handle(): void
FILE: app/Console/Commands/Entities/CalendarAdvancer.php
class CalendarAdvancer (line 12) | class CalendarAdvancer extends Command
method __construct (line 41) | public function __construct(protected AdvancerService $service)
method handle (line 51) | public function handle()
FILE: app/Console/Commands/Entities/ChildlessEntities.php
class ChildlessEntities (line 9) | class ChildlessEntities extends Command
method __construct (line 34) | public function __construct()
method handle (line 44) | public function handle()
method trace (line 80) | protected function trace(Entity $entity, string $type): void
FILE: app/Console/Commands/Entities/MapChunk.php
class MapChunk (line 10) | class MapChunk extends Command
method __construct (line 31) | public function __construct()
method handle (line 39) | public function handle()
method dispatch (line 58) | protected function dispatch(int $mapID)
FILE: app/Console/Commands/InstallCommand.php
class InstallCommand (line 9) | class InstallCommand extends Command
method handle (line 28) | public function handle()
FILE: app/Console/Commands/Metrics/MetricsGa4.php
class MetricsGa4 (line 23) | class MetricsGa4 extends Command
method handle (line 29) | public function handle(): int
method homepageSessions (line 72) | private function homepageSessions(BetaAnalyticsDataClient $client, str...
method registerPageSources (line 129) | private function registerPageSources(BetaAnalyticsDataClient $client, ...
method registerCtaClicks (line 177) | private function registerCtaClicks(BetaAnalyticsDataClient $client, st...
method scrollDepth (line 225) | private function scrollDepth(BetaAnalyticsDataClient $client, string $...
FILE: app/Console/Commands/Migrations/BookmarkEntityType.php
class BookmarkEntityType (line 9) | class BookmarkEntityType extends Command
method handle (line 28) | public function handle()
FILE: app/Console/Commands/Migrations/Cdn.php
class Cdn (line 8) | class Cdn extends Command
method handle (line 27) | public function handle()
FILE: app/Console/Commands/Migrations/MigrateEntityStatuses.php
class MigrateEntityStatuses (line 8) | class MigrateEntityStatuses extends Command
method handle (line 14) | public function handle(): void
method migrateCharacters (line 42) | protected function migrateCharacters(): void
method migrateQuests (line 76) | protected function migrateQuests(): void
method migrateBooleans (line 113) | protected function migrateBooleans(string $entityTypeKey, string $tabl...
method getCategoryStatusIds (line 144) | protected function getCategoryStatusIds(int $categoryId, array $mappin...
FILE: app/Console/Commands/Migrations/MigrateStatusFilters.php
class MigrateStatusFilters (line 8) | class MigrateStatusFilters extends Command
method handle (line 32) | public function handle(): void
method migrateBookmarks (line 40) | protected function migrateBookmarks(): void
method migrateWidgets (line 62) | protected function migrateWidgets(): void
method migrateFilterParams (line 94) | protected function migrateFilterParams(array &$params, int $entityType...
method resolveStatusId (line 144) | protected function resolveStatusId(int $entityTypeId, string $key): ?int
method resolveEntityTypeCode (line 156) | protected function resolveEntityTypeCode(int $entityTypeId): ?string
method parseFilterString (line 171) | protected function parseFilterString(string $filters): array
method buildFilterString (line 181) | protected function buildFilterString(array $params): string
FILE: app/Console/Commands/Migrations/MigrateSubMentions.php
class MigrateSubMentions (line 9) | class MigrateSubMentions extends Command
method handle (line 30) | public function handle(): void
FILE: app/Console/Commands/Migrations/NewsletterSubCommand.php
class NewsletterSubCommand (line 9) | class NewsletterSubCommand extends Command
method __construct (line 27) | public function __construct(protected NewsletterService $service)
method handle (line 35) | public function handle()
FILE: app/Console/Commands/Report/Accounts.php
class Accounts (line 9) | class Accounts extends Command
method handle (line 28) | public function handle(AccountsReportService $service): void
FILE: app/Console/Commands/Report/Churn.php
class Churn (line 9) | class Churn extends Command
method handle (line 28) | public function handle(ChurnReportService $service): void
FILE: app/Console/Commands/Report/Onboarding.php
class Onboarding (line 9) | class Onboarding extends Command
method handle (line 28) | public function handle(OnboardingReportService $service): void
FILE: app/Console/Commands/Report/Weekly.php
class Weekly (line 9) | class Weekly extends Command
method handle (line 28) | public function handle(WeeklyReportService $service): void
FILE: app/Console/Commands/SetupMeilisearch.php
class SetupMeilisearch (line 16) | class SetupMeilisearch extends Command
method handle (line 37) | public function handle()
FILE: app/Console/Commands/SubscriptionEndPaypalFix.php
class SubscriptionEndPaypalFix (line 11) | class SubscriptionEndPaypalFix extends Command
method handle (line 18) | public function handle(): int
FILE: app/Console/Commands/Subscriptions/EndFreeTrials.php
class EndFreeTrials (line 10) | class EndFreeTrials extends Command
method __construct (line 28) | public function __construct(protected FreeTrialEndService $service)
method handle (line 36) | public function handle()
FILE: app/Console/Commands/Subscriptions/EndSubscriptions.php
class EndSubscriptions (line 9) | class EndSubscriptions extends Command
method __construct (line 27) | public function __construct(protected SubscriptionEndService $service)
method handle (line 37) | public function handle()
FILE: app/Console/Commands/Subscriptions/ExpiringCardCommand.php
class ExpiringCardCommand (line 11) | class ExpiringCardCommand extends Command
method __construct (line 37) | public function __construct()
method handle (line 47) | public function handle()
method notify (line 69) | protected function notify(User $user): void
FILE: app/Console/Commands/Subscriptions/PaypalExpiringCommand.php
class PaypalExpiringCommand (line 11) | class PaypalExpiringCommand extends Command
method handle (line 32) | public function handle(): int
method notify (line 56) | protected function notify(User $user): void
FILE: app/Console/Commands/Subscriptions/SubCleanupCommand.php
class SubCleanupCommand (line 9) | class SubCleanupCommand extends Command
method __construct (line 30) | public function __construct()
method handle (line 40) | public function handle()
FILE: app/Console/Commands/Tests/Mailerlite.php
class Mailerlite (line 9) | class Mailerlite extends Command
method __construct (line 25) | public function __construct(protected NewsletterService $service)
method handle (line 35) | public function handle()
FILE: app/Console/Commands/Tests/SendNotification.php
class SendNotification (line 9) | class SendNotification extends Command
method __construct (line 30) | public function __construct()
method handle (line 40) | public function handle()
FILE: app/Console/Commands/Tests/SignImageCommand.php
class SignImageCommand (line 9) | class SignImageCommand extends Command
method __construct (line 34) | public function __construct()
method handle (line 42) | public function handle()
FILE: app/Console/Commands/Tests/TestEmail.php
class TestEmail (line 21) | class TestEmail extends Command
method handle (line 42) | public function handle()
FILE: app/Console/Commands/Tests/TestWhiteboards.php
class TestWhiteboards (line 8) | class TestWhiteboards extends Command
method handle (line 27) | public function handle()
FILE: app/Console/Commands/Translations/Missing.php
class Missing (line 8) | class Missing extends Command
method handle (line 29) | public function handle(): void
FILE: app/Console/Commands/Users/OfferFreeTrial.php
class OfferFreeTrial (line 9) | class OfferFreeTrial extends Command
method __construct (line 27) | public function __construct(protected OfferTrialService $service)
method handle (line 35) | public function handle()
FILE: app/Console/Commands/Users/RegenerateDiscordToken.php
class RegenerateDiscordToken (line 14) | class RegenerateDiscordToken extends Command
method __construct (line 28) | public function __construct(protected DiscordService $service)
method handle (line 38) | public function handle()
FILE: app/Console/Commands/Users/ResetUserPassword.php
class ResetUserPassword (line 11) | class ResetUserPassword extends Command
method __construct (line 32) | public function __construct()
method handle (line 42) | public function handle()
FILE: app/Console/Commands/Users/SyncUserRoles.php
class SyncUserRoles (line 9) | class SyncUserRoles extends Command
method __construct (line 30) | public function __construct(protected DiscordService $service)
method handle (line 40) | public function handle()
FILE: app/Console/Commands/VerifyParentIds.php
class VerifyParentIds (line 8) | class VerifyParentIds extends Command
method handle (line 14) | public function handle(): int
FILE: app/Console/Commands/WordCount.php
class WordCount (line 17) | class WordCount extends Command
method handle (line 36) | public function handle()
method process (line 53) | protected function process(string $className, string $field = 'entry')
FILE: app/Console/Kernel.php
class Kernel (line 24) | class Kernel extends ConsoleKernel
method schedule (line 38) | protected function schedule(Schedule $schedule): void
method commands (line 68) | protected function commands(): void
FILE: app/Datagrids/Actions/BookmarkDatagridActions.php
class BookmarkDatagridActions (line 8) | class BookmarkDatagridActions extends DatagridActions
FILE: app/Datagrids/Actions/DatagridActions.php
class DatagridActions (line 12) | abstract class DatagridActions
method hasBulkPermissions (line 35) | public function hasBulkPermissions(): bool
method hasBulkEditing (line 43) | public function hasBulkEditing(): bool
method hasBulkCopy (line 51) | public function hasBulkCopy(): bool
method hasBulkTransform (line 59) | public function hasBulkTransform(): bool
method hasBulkTemplate (line 67) | public function hasBulkTemplate(): bool
method hasBulkPrint (line 75) | public function hasBulkPrint(): bool
FILE: app/Datagrids/Actions/DefaultDatagridActions.php
class DefaultDatagridActions (line 8) | class DefaultDatagridActions extends DatagridActions {}
FILE: app/Datagrids/Actions/DeprecatedDatagridActions.php
class DeprecatedDatagridActions (line 9) | class DeprecatedDatagridActions extends DatagridActions
FILE: app/Datagrids/Actions/HistoryActions.php
class HistoryActions (line 8) | class HistoryActions extends DatagridActions
FILE: app/Datagrids/Actions/NoDatagridActions.php
class NoDatagridActions (line 9) | class NoDatagridActions extends DatagridActions
FILE: app/Datagrids/Actions/RelationDatagridActions.php
class RelationDatagridActions (line 8) | class RelationDatagridActions extends DatagridActions
FILE: app/Datagrids/Bulks/AbilityBulk.php
class AbilityBulk (line 5) | class AbilityBulk extends Bulk
FILE: app/Datagrids/Bulks/AttributeTemplateBulk.php
class AttributeTemplateBulk (line 5) | class AttributeTemplateBulk extends Bulk
FILE: app/Datagrids/Bulks/BookmarkBulk.php
class BookmarkBulk (line 5) | class BookmarkBulk extends Bulk
FILE: app/Datagrids/Bulks/Bulk.php
class Bulk (line 11) | abstract class Bulk
method fields (line 16) | public function fields(): array
method booleans (line 28) | public function booleans(): array
method foreignRelations (line 40) | public function foreignRelations(): array
method maths (line 52) | public function maths(): array
method defaults (line 64) | protected function defaults(): array
FILE: app/Datagrids/Bulks/CalendarBulk.php
class CalendarBulk (line 5) | class CalendarBulk extends Bulk
FILE: app/Datagrids/Bulks/CharacterBulk.php
class CharacterBulk (line 5) | class CharacterBulk extends Bulk
FILE: app/Datagrids/Bulks/ConversationBulk.php
class ConversationBulk (line 5) | class ConversationBulk extends Bulk
FILE: app/Datagrids/Bulks/CreatureBulk.php
class CreatureBulk (line 5) | class CreatureBulk extends Bulk
FILE: app/Datagrids/Bulks/DefaultBulk.php
class DefaultBulk (line 8) | class DefaultBulk extends Bulk {}
FILE: app/Datagrids/Bulks/DiceRollBulk.php
class DiceRollBulk (line 5) | class DiceRollBulk extends Bulk
FILE: app/Datagrids/Bulks/EntityBulk.php
class EntityBulk (line 5) | class EntityBulk extends Bulk
FILE: app/Datagrids/Bulks/EventBulk.php
class EventBulk (line 5) | class EventBulk extends Bulk
FILE: app/Datagrids/Bulks/FamilyBulk.php
class FamilyBulk (line 5) | class FamilyBulk extends Bulk
FILE: app/Datagrids/Bulks/ItemBulk.php
class ItemBulk (line 5) | class ItemBulk extends Bulk
FILE: app/Datagrids/Bulks/JournalBulk.php
class JournalBulk (line 5) | class JournalBulk extends Bulk
FILE: app/Datagrids/Bulks/LocationBulk.php
class LocationBulk (line 5) | class LocationBulk extends Bulk
FILE: app/Datagrids/Bulks/MapBulk.php
class MapBulk (line 5) | class MapBulk extends Bulk
FILE: app/Datagrids/Bulks/NoteBulk.php
class NoteBulk (line 5) | class NoteBulk extends Bulk
FILE: app/Datagrids/Bulks/OrganisationBulk.php
class OrganisationBulk (line 5) | class OrganisationBulk extends Bulk
FILE: app/Datagrids/Bulks/QuestBulk.php
class QuestBulk (line 5) | class QuestBulk extends Bulk
FILE: app/Datagrids/Bulks/RaceBulk.php
class RaceBulk (line 5) | class RaceBulk extends Bulk
FILE: app/Datagrids/Bulks/RelationBulk.php
class RelationBulk (line 5) | class RelationBulk extends Bulk
FILE: app/Datagrids/Bulks/TagBulk.php
class TagBulk (line 5) | class TagBulk extends Bulk
FILE: app/Datagrids/Bulks/TimelineBulk.php
class TimelineBulk (line 5) | class TimelineBulk extends Bulk
FILE: app/Datagrids/Datagrid.php
class Datagrid (line 12) | abstract class Datagrid
method hasBulkPermissions (line 32) | public function hasBulkPermissions(): bool
method hasBulkCopy (line 40) | public function hasBulkCopy(): bool
method hasBulkTransform (line 48) | public function hasBulkTransform(): bool
method hasBulkTemplate (line 56) | public function hasBulkTemplate(): bool
method hasBulkPrint (line 64) | public function hasBulkPrint(): bool
FILE: app/Datagrids/Filters/AbilityFilter.php
class AbilityFilter (line 5) | class AbilityFilter extends DatagridFilter
method build (line 10) | public function build()
FILE: app/Datagrids/Filters/AttributeTemplateFilter.php
class AttributeTemplateFilter (line 5) | class AttributeTemplateFilter extends DatagridFilter
method build (line 10) | public function build()
FILE: app/Datagrids/Filters/CalendarFilter.php
class CalendarFilter (line 5) | class CalendarFilter extends DatagridFilter
method build (line 10) | public function build()
FILE: app/Datagrids/Filters/CharacterFilter.php
class CharacterFilter (line 5) | class CharacterFilter extends DatagridFilter
method build (line 10) | public function build()
FILE: app/Datagrids/Filters/ConversationFilter.php
class ConversationFilter (line 5) | class ConversationFilter extends DatagridFilter
method build (line 10) | public function build()
FILE: app/Datagrids/Filters/CreatureFilter.php
class CreatureFilter (line 5) | class CreatureFilter extends DatagridFilter
method build (line 10) | public function build()
FILE: app/Datagrids/Filters/CustomEntityFilter.php
class CustomEntityFilter (line 5) | class CustomEntityFilter extends DatagridFilter
method build (line 10) | public function build()
FILE: app/Datagrids/Filters/DatagridFilter.php
class DatagridFilter (line 25) | abstract class DatagridFilter
method build (line 33) | public function build() {}
method filters (line 38) | public function filters(): array
method add (line 46) | protected function add($name): self
method location (line 56) | protected function location(): self
method locations (line 79) | protected function locations(): self
method races (line 103) | protected function races(): self
method organisations (line 127) | protected function organisations(): self
method families (line 151) | protected function families(): self
method character (line 175) | protected function character(string $field = 'character_id'): self
method journal (line 197) | protected function journal(): self
method tags (line 219) | protected function tags(): self
method isPrivate (line 241) | protected function isPrivate(): self
method hasImage (line 254) | protected function hasImage(): self
method parent (line 264) | protected function parent(int $entityTypeId): self
method hasPosts (line 281) | protected function hasPosts(): self
method hasEntry (line 291) | protected function hasEntry(): self
method hasAttributes (line 301) | protected function hasAttributes(): self
method hasEntityFiles (line 311) | protected function hasEntityFiles(): self
method date (line 321) | protected function date(): self
method attributes (line 331) | protected function attributes(): self
method connections (line 341) | protected function connections(): self
method createdBy (line 351) | protected function createdBy(): self
method updatedBy (line 368) | protected function updatedBy(): self
method dateRange (line 385) | protected function dateRange(): self
method template (line 395) | protected function template(): self
method archived (line 405) | protected function archived(): self
FILE: app/Datagrids/Filters/DiceRollFilter.php
class DiceRollFilter (line 5) | class DiceRollFilter extends DatagridFilter
method build (line 10) | public function build()
FILE: app/Datagrids/Filters/EventFilter.php
class EventFilter (line 5) | class EventFilter extends DatagridFilter
method build (line 10) | public function build()
FILE: app/Datagrids/Filters/FamilyFilter.php
class FamilyFilter (line 5) | class FamilyFilter extends DatagridFilter
method build (line 10) | public function build()
FILE: app/Datagrids/Filters/HistoryFilter.php
class HistoryFilter (line 7) | class HistoryFilter extends DatagridFilter
method build (line 12) | public function build()
FILE: app/Datagrids/Filters/ItemFilter.php
class ItemFilter (line 5) | class ItemFilter extends DatagridFilter
method build (line 10) | public function build()
FILE: app/Datagrids/Filters/JournalFilter.php
class JournalFilter (line 7) | class JournalFilter extends DatagridFilter
method build (line 12) | public function build()
FILE: app/Datagrids/Filters/LocationFilter.php
class LocationFilter (line 5) | class LocationFilter extends DatagridFilter
method build (line 10) | public function build()
FILE: app/Datagrids/Filters/MapFilter.php
class MapFilter (line 5) | class MapFilter extends DatagridFilter
method build (line 10) | public function build()
FILE: app/Datagrids/Filters/NoteFilter.php
class NoteFilter (line 5) | class NoteFilter extends DatagridFilter
method build (line 10) | public function build()
FILE: app/Datagrids/Filters/OrganisationFilter.php
class OrganisationFilter (line 5) | class OrganisationFilter extends DatagridFilter
method build (line 10) | public function build()
FILE: app/Datagrids/Filters/QuestFilter.php
class QuestFilter (line 7) | class QuestFilter extends DatagridFilter
method build (line 12) | public function build()
FILE: app/Datagrids/Filters/RaceFilter.php
class RaceFilter (line 5) | class RaceFilter extends DatagridFilter
method build (line 10) | public function build()
FILE: app/Datagrids/Filters/RelationFilter.php
class RelationFilter (line 7) | class RelationFilter extends DatagridFilter
method build (line 12) | public function build()
FILE: app/Datagrids/Filters/TagFilter.php
class TagFilter (line 5) | class TagFilter extends DatagridFilter
method build (line 10) | public function build()
FILE: app/Datagrids/Filters/TimelineFilter.php
class TimelineFilter (line 5) | class TimelineFilter extends DatagridFilter
method build (line 10) | public function build()
FILE: app/Datagrids/Filters/WhiteboardFilter.php
class WhiteboardFilter (line 5) | class WhiteboardFilter extends DatagridFilter
method build (line 10) | public function build()
FILE: app/Datagrids/Sorters/DatagridSorter.php
class DatagridSorter (line 10) | abstract class DatagridSorter
method __construct (line 57) | public function __construct()
method options (line 68) | public function options(?Campaign $campaign = null): array
method isSelected (line 81) | public function isSelected(string $key, bool $asc = true): bool
method direction (line 91) | public function direction(bool $asc = true): string
method fieldname (line 96) | public function fieldname(): string
method request (line 101) | public function request(array $data): self
method column (line 121) | public function column()
method order (line 130) | public function order(): string
method sessionkey (line 135) | protected function sessionkey(): string
method parse (line 145) | protected function parse(string $selected): self
method validOption (line 167) | protected function validOption(string $key, ?Campaign $campaign = null)
FILE: app/Datagrids/Sorters/QuestElementSorter.php
class QuestElementSorter (line 8) | class QuestElementSorter extends DatagridSorter
FILE: app/Definitions/CustomCssDefinitions.php
class CustomCssDefinitions (line 12) | class CustomCssDefinitions implements CssDefinition
method apply (line 14) | public static function apply(HTMLPurifier_CSSDefinition $definition): ...
FILE: app/Definitions/CustomDefinitions.php
class CustomDefinitions (line 9) | class CustomDefinitions implements Definition
method apply (line 11) | public static function apply(HTMLPurifier_HTMLDefinition $def)
FILE: app/Enums/PricingPeriod.php
method isYearly (line 10) | public function isYearly(): bool
method lowerName (line 18) | public function lowerName(): string
FILE: app/Enums/Widget.php
method isHeader (line 20) | public function isHeader(): bool
FILE: app/Events/AdminInviteCreated.php
class AdminInviteCreated (line 9) | class AdminInviteCreated
method __construct (line 16) | public function __construct(
FILE: app/Events/Campaigns/Applications/Accepted.php
class Accepted (line 14) | class Accepted
method __construct (line 21) | public function __construct(
method broadcastOn (line 34) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Applications/Rejected.php
class Rejected (line 14) | class Rejected
method __construct (line 21) | public function __construct(
method broadcastOn (line 34) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Dashboards/DashboardCreated.php
class DashboardCreated (line 13) | class DashboardCreated
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Dashboards/DashboardDeleted.php
class DashboardDeleted (line 13) | class DashboardDeleted
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Dashboards/DashboardUpdated.php
class DashboardUpdated (line 13) | class DashboardUpdated
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Deleted.php
class Deleted (line 13) | class Deleted
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/EntityTypes/EntityTypeCreated.php
class EntityTypeCreated (line 13) | class EntityTypeCreated
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/EntityTypes/EntityTypeDeleted.php
class EntityTypeDeleted (line 13) | class EntityTypeDeleted
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/EntityTypes/EntityTypeToggled.php
class EntityTypeToggled (line 14) | class EntityTypeToggled
method __construct (line 21) | public function __construct(
method broadcastOn (line 34) | public function broadcastOn(): array
FILE: app/Events/Campaigns/EntityTypes/EntityTypeUpdated.php
class EntityTypeUpdated (line 13) | class EntityTypeUpdated
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Exports/ExportCreated.php
class ExportCreated (line 13) | class ExportCreated
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Followers/FollowerCreated.php
class FollowerCreated (line 12) | class FollowerCreated
method __construct (line 19) | public function __construct(
method broadcastOn (line 30) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Followers/FollowerRemoved.php
class FollowerRemoved (line 12) | class FollowerRemoved
method __construct (line 19) | public function __construct(
method broadcastOn (line 30) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Invites/InviteCreated.php
class InviteCreated (line 13) | class InviteCreated
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Invites/InviteDeleted.php
class InviteDeleted (line 13) | class InviteDeleted
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Members/RoleUserAdded.php
class RoleUserAdded (line 11) | class RoleUserAdded
method __construct (line 18) | public function __construct(
FILE: app/Events/Campaigns/Members/RoleUserRemoved.php
class RoleUserRemoved (line 11) | class RoleUserRemoved
method __construct (line 18) | public function __construct(
FILE: app/Events/Campaigns/Members/Switched.php
class Switched (line 14) | class Switched
method __construct (line 21) | public function __construct(
method broadcastOn (line 34) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Members/UserJoined.php
class UserJoined (line 14) | class UserJoined
method __construct (line 21) | public function __construct(
method broadcastOn (line 34) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Members/UserLeft.php
class UserLeft (line 13) | class UserLeft
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Plugins/PluginDeleted.php
class PluginDeleted (line 13) | class PluginDeleted
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Plugins/PluginImported.php
class PluginImported (line 13) | class PluginImported
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Plugins/PluginUpdated.php
class PluginUpdated (line 13) | class PluginUpdated
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Roles/RoleCreated.php
class RoleCreated (line 13) | class RoleCreated
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Roles/RoleDeleted.php
class RoleDeleted (line 13) | class RoleDeleted
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Roles/RoleUpdated.php
class RoleUpdated (line 13) | class RoleUpdated
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Saved.php
class Saved (line 13) | class Saved
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/SettingsSaved.php
class SettingsSaved (line 13) | class SettingsSaved
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Sidebar/SidebarReset.php
class SidebarReset (line 13) | class SidebarReset
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Sidebar/SidebarSaved.php
class SidebarSaved (line 13) | class SidebarSaved
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Styles/StyleCreated.php
class StyleCreated (line 14) | class StyleCreated
method __construct (line 21) | public function __construct(
method broadcastOn (line 34) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Styles/StyleDeleted.php
class StyleDeleted (line 14) | class StyleDeleted
method __construct (line 21) | public function __construct(
method broadcastOn (line 34) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Styles/StyleUpdated.php
class StyleUpdated (line 14) | class StyleUpdated
method __construct (line 21) | public function __construct(
method broadcastOn (line 34) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Thumbnails/ThumbnailCreated.php
class ThumbnailCreated (line 14) | class ThumbnailCreated
method __construct (line 21) | public function __construct(
method broadcastOn (line 34) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Thumbnails/ThumbnailDeleted.php
class ThumbnailDeleted (line 14) | class ThumbnailDeleted
method __construct (line 21) | public function __construct(
method broadcastOn (line 34) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Thumbnails/ThumbnailsDeleted.php
class ThumbnailsDeleted (line 13) | class ThumbnailsDeleted
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Updated.php
class Updated (line 13) | class Updated
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Webhooks/WebhookCreated.php
class WebhookCreated (line 13) | class WebhookCreated
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Webhooks/WebhookDeleted.php
class WebhookDeleted (line 13) | class WebhookDeleted
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Webhooks/WebhookTested.php
class WebhookTested (line 13) | class WebhookTested
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Campaigns/Webhooks/WebhookUpdated.php
class WebhookUpdated (line 13) | class WebhookUpdated
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Entities/EntityRestored.php
class EntityRestored (line 13) | class EntityRestored
method __construct (line 20) | public function __construct(
method broadcastOn (line 30) | public function broadcastOn(): array
FILE: app/Events/FeatureCreated.php
class FeatureCreated (line 9) | class FeatureCreated
method __construct (line 16) | public function __construct(
FILE: app/Events/Posts/PostCreated.php
class PostCreated (line 13) | class PostCreated
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Posts/PostDeleted.php
class PostDeleted (line 13) | class PostDeleted
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Posts/PostRestored.php
class PostRestored (line 13) | class PostRestored
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Posts/PostUpdated.php
class PostUpdated (line 13) | class PostUpdated
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/SpotlightSubmitted.php
class SpotlightSubmitted (line 9) | class SpotlightSubmitted
method __construct (line 16) | public function __construct(public SpotlightContent $spotlightContent)
FILE: app/Events/Subscriptions/AutoRemove.php
class AutoRemove (line 13) | class AutoRemove
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Subscriptions/Boost.php
class Boost (line 13) | class Boost
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Subscriptions/Disable.php
class Disable (line 13) | class Disable
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Subscriptions/Premium.php
class Premium (line 13) | class Premium
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Subscriptions/SuperBoost.php
class SuperBoost (line 13) | class SuperBoost
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Subscriptions/Upgrade.php
class Upgrade (line 13) | class Upgrade
method __construct (line 20) | public function __construct(
method broadcastOn (line 32) | public function broadcastOn(): array
FILE: app/Events/Users/EmailChanged.php
class EmailChanged (line 12) | class EmailChanged
method __construct (line 19) | public function __construct(
method broadcastOn (line 31) | public function broadcastOn(): array
FILE: app/Events/WhiteboardUpdated.php
class WhiteboardUpdated (line 12) | class WhiteboardUpdated implements ShouldBroadcastNow
method __construct (line 20) | public function __construct(int $whiteboardId, array $payload = [])
method broadcastAs (line 27) | public function broadcastAs()
method broadcastOn (line 37) | public function broadcastOn(): array
FILE: app/Events/Whiteboards/Updated.php
class Updated (line 16) | class Updated implements ShouldBroadcastNow
method __construct (line 23) | public function __construct(
method broadcastOn (line 38) | public function broadcastOn(): array
method broadcastAs (line 48) | public function broadcastAs(): string
method broadcastWith (line 53) | public function broadcastWith(): array
FILE: app/Exceptions/Campaign/AlreadyBoostedException.php
class AlreadyBoostedException (line 8) | class AlreadyBoostedException extends TranslatableException
method __construct (line 12) | public function __construct($message = '', $code = 0, ?Throwable $prev...
FILE: app/Exceptions/Campaign/ExhaustedBoostsException.php
class ExhaustedBoostsException (line 7) | class ExhaustedBoostsException extends TranslatableException
FILE: app/Exceptions/Campaign/ExhaustedSuperboostsException.php
class ExhaustedSuperboostsException (line 7) | class ExhaustedSuperboostsException extends TranslatableException
FILE: app/Exceptions/Campaign/ImportException.php
class ImportException (line 7) | class ImportException extends Exception {}
FILE: app/Exceptions/Handler.php
class Handler (line 34) | class Handler extends ExceptionHandler
method register (line 54) | public function register(): void
method render (line 69) | public function render($request, Throwable $exception)
method unauthenticated (line 122) | protected function unauthenticated($request, AuthenticationException $...
method handleApiErrors (line 137) | protected function handleApiErrors(Throwable $exception)
FILE: app/Exceptions/OpenAiException.php
class OpenAiException (line 7) | class OpenAiException extends Exception
method getContext (line 11) | public function getContext()
method setContext (line 16) | public function setContext($context)
FILE: app/Exceptions/RequireLoginException.php
class RequireLoginException (line 7) | class RequireLoginException extends Exception {}
FILE: app/Exceptions/TranslatableException.php
class TranslatableException (line 10) | class TranslatableException extends Exception
method getTranslatedMessage (line 19) | public function getTranslatedMessage(): string
method setOptions (line 27) | public function setOptions(array $options)
FILE: app/Facades/AdCache.php
class AdCache (line 15) | class AdCache extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/ApiLog.php
class ApiLog (line 15) | class ApiLog extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/Attributes.php
class Attributes (line 15) | class Attributes extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/Avatar.php
class Avatar (line 15) | class Avatar extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/BookmarkCache.php
class BookmarkCache (line 15) | class BookmarkCache extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/Breadcrumb.php
class Breadcrumb (line 15) | class Breadcrumb extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/CampaignCache.php
class CampaignCache (line 15) | class CampaignCache extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/CampaignLocalization.php
class CampaignLocalization (line 15) | class CampaignLocalization extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/CharacterCache.php
class CharacterCache (line 15) | class CharacterCache extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/Dashboard.php
class Dashboard (line 15) | class Dashboard extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/DataLayer.php
class DataLayer (line 15) | class DataLayer extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/Datagrid.php
class Datagrid (line 15) | class Datagrid extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/Domain.php
class Domain (line 11) | class Domain extends Facade
method getFacadeAccessor (line 18) | protected static function getFacadeAccessor()
FILE: app/Facades/EntityAssetCache.php
class EntityAssetCache (line 15) | class EntityAssetCache extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/EntityCache.php
class EntityCache (line 15) | class EntityCache extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/EntityLogger.php
class EntityLogger (line 15) | class EntityLogger extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/EntityPermission.php
class EntityPermission (line 14) | class EntityPermission extends Facade
method getFacadeAccessor (line 21) | protected static function getFacadeAccessor()
FILE: app/Facades/FormCopy.php
class FormCopy (line 15) | class FormCopy extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/Identity.php
class Identity (line 15) | class Identity extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/Images.php
class Images (line 15) | class Images extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/Img.php
class Img (line 15) | class Img extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/ImportIdMapper.php
class ImportIdMapper (line 14) | class ImportIdMapper extends Facade
method getFacadeAccessor (line 21) | protected static function getFacadeAccessor()
FILE: app/Facades/Limit.php
class Limit (line 11) | class Limit extends Facade
method getFacadeAccessor (line 18) | protected static function getFacadeAccessor()
FILE: app/Facades/MapMarkerCache.php
class MapMarkerCache (line 15) | class MapMarkerCache extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/MarketplaceCache.php
class MarketplaceCache (line 15) | class MarketplaceCache extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/Mentions.php
class Mentions (line 15) | class Mentions extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/Module.php
class Module (line 15) | class Module extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/Permissions.php
class Permissions (line 16) | class Permissions extends Facade
method getFacadeAccessor (line 23) | protected static function getFacadeAccessor()
FILE: app/Facades/QuestCache.php
class QuestCache (line 15) | class QuestCache extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/ReleaseCache.php
class ReleaseCache (line 13) | class ReleaseCache extends Facade
method getFacadeAccessor (line 20) | protected static function getFacadeAccessor()
FILE: app/Facades/RolePermission.php
class RolePermission (line 15) | class RolePermission extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/SingleUserCache.php
class SingleUserCache (line 15) | class SingleUserCache extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/TimelineElementCache.php
class TimelineElementCache (line 15) | class TimelineElementCache extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/UserCache.php
class UserCache (line 15) | class UserCache extends Facade
method getFacadeAccessor (line 22) | protected static function getFacadeAccessor()
FILE: app/Facades/UserPermission.php
class UserPermission (line 14) | class UserPermission extends Facade
method getFacadeAccessor (line 21) | protected static function getFacadeAccessor()
FILE: app/Http/Controllers/Abilities/AbilityController.php
class AbilityController (line 13) | class AbilityController extends Controller
method index (line 20) | public function index(Campaign $campaign, Ability $ability)
FILE: app/Http/Controllers/Abilities/EntityController.php
class EntityController (line 16) | class EntityController extends Controller
method index (line 23) | public function index(Campaign $campaign, Ability $ability)
method create (line 46) | public function create(Campaign $campaign, Ability $ability)
method store (line 61) | public function store(StoreAbilityEntity $request, Campaign $campaign,...
FILE: app/Http/Controllers/Account/Billing/InformationController.php
class InformationController (line 9) | class InformationController extends Controller
method __construct (line 11) | public function __construct()
method index (line 16) | public function index()
method save (line 21) | public function save(StoreBillingSettings $request)
FILE: app/Http/Controllers/Account/DeleteController.php
class DeleteController (line 10) | class DeleteController extends Controller
method __construct (line 12) | public function __construct(protected DeletionService $deletionService)
method destroy (line 17) | public function destroy(DeleteSettingsAccount $request)
FILE: app/Http/Controllers/Account/EmailController.php
class EmailController (line 8) | class EmailController extends Controller
method __construct (line 10) | public function __construct()
method index (line 15) | public function index()
method save (line 20) | public function save(StoreSettingsAccountEmail $request)
FILE: app/Http/Controllers/Account/PasswordController.php
class PasswordController (line 11) | class PasswordController extends Controller
method __construct (line 13) | public function __construct()
method index (line 18) | public function index()
method save (line 23) | public function save(StoreSettingsAccount $request)
FILE: app/Http/Controllers/Account/SocialController.php
class SocialController (line 10) | class SocialController extends Controller
method __construct (line 12) | public function __construct()
method index (line 17) | public function index()
method save (line 28) | public function save(StoreSettingsAccount $request)
FILE: app/Http/Controllers/Api/Public/CampaignController.php
class CampaignController (line 10) | class CampaignController extends Controller
method __construct (line 14) | public function __construct(CampaignService $service)
method index (line 19) | public function index(Request $request)
method setup (line 30) | public function setup()
FILE: app/Http/Controllers/Api/Public/HallOfFameController.php
class HallOfFameController (line 9) | class HallOfFameController extends Controller
method __construct (line 13) | public function __construct(HallOfFameService $service)
method index (line 18) | public function index()
FILE: app/Http/Controllers/Api/Public/KbController.php
class KbController (line 9) | class KbController extends Controller
method __construct (line 13) | public function __construct(KbService $service)
method index (line 18) | public function index()
FILE: app/Http/Controllers/Api/Public/ShowcaseController.php
class ShowcaseController (line 10) | class ShowcaseController extends Controller
method __construct (line 12) | public function __construct(protected ShowcaseService $service) {}
method index (line 14) | public function index(Request $request)
method setup (line 25) | public function setup(Request $request)
FILE: app/Http/Controllers/Api/Public/VoteController.php
class VoteController (line 10) | class VoteController extends Controller
method __construct (line 14) | public function __construct(VoteService $service)
method index (line 19) | public function index()
method show (line 28) | public function show(CommunityVote $communityVote)
FILE: app/Http/Controllers/Api/v1/AbilityApiController.php
class AbilityApiController (line 14) | class AbilityApiController extends MiscApiController
method index (line 21) | public function index(Campaign $campaign)
method show (line 36) | public function show(Campaign $campaign, Ability $ability)
method store (line 49) | public function store(Request $request, Campaign $campaign)
method update (line 65) | public function update(Request $request, Campaign $campaign, Ability $...
method destroy (line 80) | public function destroy(Campaign $campaign, Ability $ability)
FILE: app/Http/Controllers/Api/v1/ApiController.php
class ApiController (line 7) | class ApiController extends Controller {}
FILE: app/Http/Controllers/Api/v1/ApplicationApiController.php
class ApplicationApiController (line 15) | class ApplicationApiController extends ApiController
method __construct (line 17) | public function __construct(protected ApplicationService $service)
method index (line 27) | public function index(Campaign $campaign)
method show (line 39) | public function show(Campaign $campaign, Application $application)
method reject (line 49) | public function reject(RejectApplication $request, Campaign $campaign,...
method approve (line 67) | public function approve(ApproveApplication $request, Campaign $campaig...
FILE: app/Http/Controllers/Api/v1/AttributeTemplateApiController.php
class AttributeTemplateApiController (line 17) | class AttributeTemplateApiController extends MiscApiController
method __construct (line 21) | public function __construct(
method index (line 35) | public function index(Campaign $campaign)
method show (line 50) | public function show(Campaign $campaign, AttributeTemplate $attributeT...
method store (line 63) | public function store(Request $request, Campaign $campaign)
method update (line 79) | public function update(Request $request, Campaign $campaign, Attribute...
method destroy (line 94) | public function destroy(Campaign $campaign, AttributeTemplate $attribu...
FILE: app/Http/Controllers/Api/v1/BookmarkApiController.php
class BookmarkApiController (line 13) | class BookmarkApiController extends ApiController
method index (line 20) | public function index(Campaign $campaign)
method show (line 33) | public function show(Campaign $campaign, Bookmark $bookmark)
method store (line 46) | public function store(Request $request, Campaign $campaign)
method update (line 62) | public function update(Request $request, Campaign $campaign, Bookmark ...
method destroy (line 76) | public function destroy(Campaign $campaign, Bookmark $bookmark)
FILE: app/Http/Controllers/Api/v1/CalendarApiController.php
class CalendarApiController (line 17) | class CalendarApiController extends MiscApiController
method __construct (line 21) | public function __construct(
method index (line 35) | public function index(Campaign $campaign)
method show (line 50) | public function show(Campaign $campaign, Calendar $calendar)
method store (line 63) | public function store(Request $request, Campaign $campaign)
method update (line 81) | public function update(Request $request, Campaign $campaign, Calendar ...
method destroy (line 97) | public function destroy(Campaign $campaign, Calendar $calendar)
FILE: app/Http/Controllers/Api/v1/CalendarEventApiController.php
class CalendarEventApiController (line 11) | class CalendarEventApiController extends ApiController
method index (line 18) | public function index(Campaign $campaign, Calendar $calendar)
FILE: app/Http/Controllers/Api/v1/CalendarWeatherApiController.php
class CalendarWeatherApiController (line 14) | class CalendarWeatherApiController extends ApiController
method index (line 21) | public function index(Campaign $campaign, Calendar $calendar)
method show (line 35) | public function show(Campaign $campaign, Calendar $calendar, CalendarW...
method store (line 48) | public function store(Request $request, Campaign $campaign, Calendar $...
method update (line 64) | public function update(Request $request, Campaign $campaign, Calendar ...
method destroy (line 78) | public function destroy(Campaign $campaign, Calendar $calendar, Calend...
FILE: app/Http/Controllers/Api/v1/Calendars/AdvancerApiController.php
class AdvancerApiController (line 11) | class AdvancerApiController extends ApiController
method __construct (line 15) | public function __construct(AdvancerService $service)
method advance (line 23) | public function advance(Campaign $campaign, Calendar $calendar)
method retreat (line 38) | public function retreat(Campaign $campaign, Calendar $calendar)
FILE: app/Http/Controllers/Api/v1/CampaignApiController.php
class CampaignApiController (line 12) | class CampaignApiController extends ApiController
method __construct (line 14) | public function __construct(
method index (line 19) | public function index(\Illuminate\Http\Request $request)
method show (line 31) | public function show(Campaign $campaign)
method store (line 40) | public function store(Request $request)
method update (line 52) | public function update(Request $request, Campaign $campaign)
method destroy (line 65) | public function destroy(Request $request, Campaign $campaign)
FILE: app/Http/Controllers/Api/v1/CampaignDashboardWidgetApiController.php
class CampaignDashboardWidgetApiController (line 14) | class CampaignDashboardWidgetApiController extends ApiController
method index (line 21) | public function index(Campaign $campaign)
method show (line 35) | public function show(Campaign $campaign, CampaignDashboardWidget $camp...
method store (line 47) | public function store(Request $request, Campaign $campaign)
method update (line 63) | public function update(Request $request, Campaign $campaign, CampaignD...
method destroy (line 76) | public function destroy(Campaign $campaign, CampaignDashboardWidget $c...
FILE: app/Http/Controllers/Api/v1/CampaignImageApiController.php
class CampaignImageApiController (line 14) | class CampaignImageApiController extends ApiController
method __construct (line 18) | public function __construct(SummernoteService $summernoteService)
method index (line 23) | public function index(Campaign $campaign)
method show (line 37) | public function show(Campaign $campaign, Image $image)
method store (line 45) | public function store(GalleryImageStore $request, Campaign $campaign)
method update (line 57) | public function update(GalleryImageUpdate $request, Campaign $campaign...
method destroy (line 71) | public function destroy(Campaign $campaign, Image $image)
FILE: app/Http/Controllers/Api/v1/CampaignRoleApiController.php
class CampaignRoleApiController (line 10) | class CampaignRoleApiController extends ApiController
method index (line 17) | public function index(Campaign $campaign)
FILE: app/Http/Controllers/Api/v1/CampaignStyleApiController.php
class CampaignStyleApiController (line 14) | class CampaignStyleApiController extends ApiController
method __construct (line 16) | public function __construct()
method index (line 26) | public function index(Campaign $campaign)
method show (line 40) | public function show(Campaign $campaign, CampaignStyle $campaignStyle)
method store (line 53) | public function store(Request $request, Campaign $campaign)
method update (line 68) | public function update(Request $request, Campaign $campaign, CampaignS...
method destroy (line 82) | public function destroy(Campaign $campaign, CampaignStyle $campaignStyle)
FILE: app/Http/Controllers/Api/v1/Campaigns/CategoryStatusController.php
class CategoryStatusController (line 10) | class CategoryStatusController extends ApiController
method index (line 12) | public function index(Campaign $campaign)
FILE: app/Http/Controllers/Api/v1/Campaigns/EntityTypeApiController.php
class EntityTypeApiController (line 16) | class EntityTypeApiController extends ApiController
method __construct (line 18) | public function __construct(protected EntityTypeService $entityTypeSer...
method index (line 28) | public function index(Campaign $campaign)
method show (line 35) | public function show(Campaign $campaign, EntityType $entityType)
method store (line 45) | public function store(StoreEntityType $request, Campaign $campaign)
method update (line 74) | public function update(StoreEntityType $request, Campaign $campaign, E...
method destroy (line 88) | public function destroy(Request $request, Campaign $campaign, EntityTy...
FILE: app/Http/Controllers/Api/v1/Campaigns/UserApiController.php
class UserApiController (line 13) | class UserApiController extends ApiController
method __construct (line 17) | public function __construct(MemberService $memberService)
method index (line 22) | public function index(Campaign $campaign)
method show (line 32) | public function show(Campaign $campaign, User $user)
method add (line 47) | public function add(UpdateUserRole $request, Campaign $campaign)
method remove (line 68) | public function remove(UpdateUserRole $request, Campaign $campaign)
FILE: app/Http/Controllers/Api/v1/CharacterApiController.php
class CharacterApiController (line 14) | class CharacterApiController extends MiscApiController
method index (line 21) | public function index(Campaign $campaign)
method show (line 40) | public function show(Campaign $campaign, Character $character)
method store (line 53) | public function store(Request $request, Campaign $campaign)
method update (line 75) | public function update(
method destroy (line 93) | public function destroy(Campaign $campaign, Character $character)
FILE: app/Http/Controllers/Api/v1/ConversationApiController.php
class ConversationApiController (line 14) | class ConversationApiController extends MiscApiController
method index (line 21) | public function index(Campaign $campaign)
method show (line 36) | public function show(Campaign $campaign, Conversation $conversation)
method store (line 49) | public function store(Request $request, Campaign $campaign)
method update (line 66) | public function update(Request $request, Campaign $campaign, Conversat...
method destroy (line 81) | public function destroy(Campaign $campaign, Conversation $conversation)
FILE: app/Http/Controllers/Api/v1/ConversationMessageApiController.php
class ConversationMessageApiController (line 15) | class ConversationMessageApiController extends ApiController
method index (line 22) | public function index(Campaign $campaign, Conversation $conversation)
method show (line 38) | public function show(
method store (line 54) | public function store(RequestMessage $requestMessage, Campaign $campai...
method update (line 66) | public function update(
method destroy (line 84) | public function destroy(
FILE: app/Http/Controllers/Api/v1/ConversationParticipantApiController.php
class ConversationParticipantApiController (line 15) | class ConversationParticipantApiController extends ApiController
method index (line 22) | public function index(Campaign $campaign, Conversation $conversation)
method show (line 33) | public function show(
method store (line 49) | public function store(RequestParticipant $requestParticipant, Campaign...
method update (line 61) | public function update(
method destroy (line 79) | public function destroy(
FILE: app/Http/Controllers/Api/v1/CreatureApiController.php
class CreatureApiController (line 14) | class CreatureApiController extends MiscApiController
method index (line 21) | public function index(Campaign $campaign)
method show (line 37) | public function show(Campaign $campaign, Creature $creature)
method store (line 50) | public function store(Request $request, Campaign $campaign)
method update (line 66) | public function update(Request $request, Campaign $campaign, Creature ...
method destroy (line 81) | public function destroy(Campaign $campaign, Creature $creature)
FILE: app/Http/Controllers/Api/v1/DefaultThumbnailApiController.php
class DefaultThumbnailApiController (line 16) | class DefaultThumbnailApiController extends ApiController
method __construct (line 18) | public function __construct(protected DefaultImageService $defaultImag...
method index (line 28) | public function index(Campaign $campaign)
method upload (line 40) | public function upload(StoreDefaultThumbnail $request, Campaign $campa...
method delete (line 61) | public function delete(DestroyDefaultThumbnail $request, Campaign $cam...
FILE: app/Http/Controllers/Api/v1/DiceRollApiController.php
class DiceRollApiController (line 14) | class DiceRollApiController extends MiscApiController
method index (line 21) | public function index(Campaign $campaign)
method show (line 36) | public function show(Campaign $campaign, DiceRoll $diceRoll)
method store (line 49) | public function store(Request $request, Campaign $campaign)
method update (line 65) | public function update(Request $request, Campaign $campaign, DiceRoll ...
method destroy (line 80) | public function destroy(Campaign $campaign, DiceRoll $diceRoll)
FILE: app/Http/Controllers/Api/v1/Entities/Attributes/PatchController.php
class PatchController (line 12) | class PatchController extends ApiController
method __construct (line 14) | public function __construct(protected BulkAttributeService $service) {}
method patch (line 16) | public function patch(SaveAttributesApi $request, Campaign $campaign, ...
FILE: app/Http/Controllers/Api/v1/Entities/Attributes/PutController.php
class PutController (line 12) | class PutController extends ApiController
method __construct (line 14) | public function __construct(protected BulkAttributeService $service) {}
method put (line 16) | public function put(SaveAttributesApi $request, Campaign $campaign, En...
FILE: app/Http/Controllers/Api/v1/Entities/ReminderApiController.php
class ReminderApiController (line 12) | class ReminderApiController extends ApiController
method index (line 14) | public function index(Campaign $campaign, Entity $entity)
method show (line 22) | public function show(Campaign $campaign, Entity $entity, Reminder $rem...
method store (line 31) | public function store(Request $request, Campaign $campaign, Entity $en...
method update (line 47) | public function update(Request $request, Campaign $campaign, Entity $e...
method destroy (line 57) | public function destroy(
FILE: app/Http/Controllers/Api/v1/EntityAbilityApiController.php
class EntityAbilityApiController (line 16) | class EntityAbilityApiController extends ApiController
method index (line 23) | public function index(Campaign $campaign, Entity $entity)
method show (line 34) | public function show(Campaign $campaign, Entity $entity, EntityAbility...
method store (line 45) | public function store(Request $request, Campaign $campaign, Entity $en...
method update (line 73) | public function update(Request $request, Campaign $campaign, Entity $e...
method destroy (line 88) | public function destroy(
FILE: app/Http/Controllers/Api/v1/EntityApiController.php
class EntityApiController (line 16) | class EntityApiController extends ApiController
method __construct (line 18) | public function __construct(
method index (line 23) | public function index(Campaign $campaign)
method show (line 37) | public function show(Campaign $campaign, Entity $entity)
method put (line 49) | public function put(StoreEntities $request, Campaign $campaign, Entity...
method edit (line 68) | public function edit(Request $request, Campaign $campaign, Entity $ent...
method patch (line 82) | public function patch(PatchEntity $request, Campaign $campaign, Entity...
method destroy (line 98) | public function destroy(Request $request, Campaign $campaign, Entity $...
FILE: app/Http/Controllers/Api/v1/EntityArchiveApiController.php
class EntityArchiveApiController (line 13) | class EntityArchiveApiController extends ApiController
method __construct (line 17) | public function __construct(ArchiveService $archiveService)
method index (line 27) | public function index(Campaign $campaign)
method switch (line 47) | public function switch(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Api/v1/EntityAssetApiController.php
class EntityAssetApiController (line 16) | class EntityAssetApiController extends ApiController
method index (line 23) | public function index(Campaign $campaign, Entity $entity)
method show (line 34) | public function show(Campaign $campaign, Entity $entity, EntityAsset $...
method store (line 47) | public function store(Request $request, Campaign $campaign, Entity $en...
method update (line 73) | public function update(Request $request, Campaign $campaign, Entity $e...
method destroy (line 88) | public function destroy(
FILE: app/Http/Controllers/Api/v1/EntityAttributeApiController.php
class EntityAttributeApiController (line 14) | class EntityAttributeApiController extends ApiController
method index (line 21) | public function index(Campaign $campaign, Entity $entity)
method show (line 32) | public function show(Campaign $campaign, Entity $entity, Attribute $at...
method store (line 45) | public function store(Request $request, Campaign $campaign, Entity $en...
method update (line 59) | public function update(Request $request, Campaign $campaign, Entity $e...
method destroy (line 75) | public function destroy(Campaign $campaign, Entity $entity, Attribute ...
FILE: app/Http/Controllers/Api/v1/EntityImageApiController.php
class EntityImageApiController (line 14) | class EntityImageApiController extends Controller
method __construct (line 16) | public function __construct(public UploadService $uploadService) {}
method show (line 18) | public function show(Campaign $campaign, Entity $entity)
method put (line 26) | public function put(UploadFile $request, Campaign $campaign, Entity $e...
method destroy (line 49) | public function destroy(Request $request, Campaign $campaign, Entity $...
FILE: app/Http/Controllers/Api/v1/EntityInventoryApiController.php
class EntityInventoryApiController (line 14) | class EntityInventoryApiController extends ApiController
method index (line 21) | public function index(Campaign $campaign, Entity $entity)
method show (line 32) | public function show(Campaign $campaign, Entity $entity, Inventory $in...
method store (line 45) | public function store(Request $request, Campaign $campaign, Entity $en...
method update (line 59) | public function update(Request $request, Campaign $campaign, Entity $e...
method destroy (line 74) | public function destroy(
FILE: app/Http/Controllers/Api/v1/EntityMentionApiController.php
class EntityMentionApiController (line 11) | class EntityMentionApiController extends ApiController
method index (line 18) | public function index(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Api/v1/EntityMoveApiController.php
class EntityMoveApiController (line 12) | class EntityMoveApiController extends ApiController
method __construct (line 16) | public function __construct(MoveService $service)
method transfer (line 26) | public function transfer(Request $request, Campaign $campaign)
FILE: app/Http/Controllers/Api/v1/EntityPermissionApiController.php
class EntityPermissionApiController (line 16) | class EntityPermissionApiController extends ApiController
method __construct (line 23) | public function __construct(ApiPermissionService $apiPermissionService)
method index (line 33) | public function index(Campaign $campaign, Entity $entity)
method show (line 44) | public function show(Campaign $campaign, Entity $entity, CampaignPermi...
method store (line 57) | public function store(Request $request, Campaign $campaign, Entity $en...
method update (line 70) | public function update(Request $request, Campaign $campaign, Entity $e...
method destroy (line 84) | public function destroy(Campaign $campaign, Entity $entity, CampaignPe...
method test (line 96) | public function test(PermissionTestRequest $request, Campaign $campaign)
FILE: app/Http/Controllers/Api/v1/EntityRecoveryApiController.php
class EntityRecoveryApiController (line 12) | class EntityRecoveryApiController extends ApiController
method __construct (line 16) | public function __construct(RecoveryService $service)
method index (line 28) | public function index(Campaign $campaign)
method recover (line 40) | public function recover(Request $request, Campaign $campaign)
FILE: app/Http/Controllers/Api/v1/EntityRelationApiController.php
class EntityRelationApiController (line 16) | class EntityRelationApiController extends ApiController
method __construct (line 20) | public function __construct(RelationService $relationService)
method index (line 30) | public function index(Campaign $campaign, Entity $entity)
method show (line 41) | public function show(Campaign $campaign, Entity $entity, Relation $rel...
method store (line 54) | public function store(Request $request, Campaign $campaign, Entity $en...
method update (line 67) | public function update(UpdateRequest $request, Campaign $campaign, Ent...
method destroy (line 82) | public function destroy(
FILE: app/Http/Controllers/Api/v1/EntityTagApiController.php
class EntityTagApiController (line 12) | class EntityTagApiController extends ApiController
method index (line 14) | public function index(Campaign $campaign, Entity $entity)
method show (line 22) | public function show(Campaign $campaign, Entity $entity, EntityTag $en...
method store (line 30) | public function store(Request $request, Campaign $campaign, Entity $en...
method update (line 41) | public function update(Request $request, Campaign $campaign, Entity $e...
method destroy (line 50) | public function destroy(
FILE: app/Http/Controllers/Api/v1/EntityTemplateApiController.php
class EntityTemplateApiController (line 13) | class EntityTemplateApiController extends ApiController
method __construct (line 17) | public function __construct(TemplateService $templateService)
method index (line 27) | public function index(Campaign $campaign)
method switch (line 47) | public function switch(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Api/v1/EntityTransformApiController.php
class EntityTransformApiController (line 12) | class EntityTransformApiController extends ApiController
method __construct (line 16) | public function __construct(TransformService $service)
method transform (line 26) | public function transform(Request $request, Campaign $campaign)
FILE: app/Http/Controllers/Api/v1/EntityTypeApiController.php
class EntityTypeApiController (line 8) | class EntityTypeApiController extends ApiController
method index (line 10) | public function index()
FILE: app/Http/Controllers/Api/v1/EventApiController.php
class EventApiController (line 14) | class EventApiController extends MiscApiController
method index (line 21) | public function index(Campaign $campaign)
method show (line 36) | public function show(Campaign $campaign, Event $event)
method store (line 49) | public function store(Request $request, Campaign $campaign)
method update (line 65) | public function update(Request $request, Campaign $campaign, Event $ev...
method destroy (line 80) | public function destroy(Campaign $campaign, Event $event)
FILE: app/Http/Controllers/Api/v1/FamilyApiController.php
class FamilyApiController (line 14) | class FamilyApiController extends MiscApiController
method index (line 21) | public function index(Campaign $campaign)
method show (line 36) | public function show(Campaign $campaign, Family $family)
method store (line 49) | public function store(Request $request, Campaign $campaign)
method update (line 65) | public function update(Request $request, Campaign $campaign, Family $f...
method destroy (line 80) | public function destroy(Campaign $campaign, Family $family)
FILE: app/Http/Controllers/Api/v1/FamilyTreeApiController.php
class FamilyTreeApiController (line 14) | class FamilyTreeApiController extends ApiController
method __construct (line 18) | public function __construct(FamilyTreeService $treeService)
method show (line 27) | public function show(Campaign $campaign, Family $family)
method store (line 40) | public function store(Request $request, Campaign $campaign, Family $fa...
method destroy (line 66) | public function destroy(Campaign $campaign, Family $family)
FILE: app/Http/Controllers/Api/v1/FilterApiController.php
class FilterApiController (line 9) | class FilterApiController extends Controller
method __construct (line 13) | public function __construct(FilterService $filterService)
method index (line 18) | public function index()
method show (line 23) | public function show(EntityType $entityType)
FILE: app/Http/Controllers/Api/v1/FullTextSearchApiController.php
class FullTextSearchApiController (line 10) | class FullTextSearchApiController extends ApiController
method __construct (line 14) | public function __construct(EntitySearchService $service)
method index (line 24) | public function index(Campaign $campaign)
FILE: app/Http/Controllers/Api/v1/HealthController.php
class HealthController (line 7) | class HealthController extends Controller
method index (line 9) | public function index()
FILE: app/Http/Controllers/Api/v1/ItemApiController.php
class ItemApiController (line 14) | class ItemApiController extends MiscApiController
method index (line 21) | public function index(Campaign $campaign)
method show (line 37) | public function show(Campaign $campaign, Item $item)
method store (line 50) | public function store(Request $request, Campaign $campaign)
method update (line 67) | public function update(Request $request, Campaign $campaign, Item $item)
method destroy (line 82) | public function destroy(Campaign $campaign, Item $item)
FILE: app/Http/Controllers/Api/v1/JournalApiController.php
class JournalApiController (line 14) | class JournalApiController extends MiscApiController
method index (line 21) | public function index(Campaign $campaign)
method show (line 36) | public function show(Campaign $campaign, Journal $journal)
method store (line 49) | public function store(Request $request, Campaign $campaign)
method update (line 65) | public function update(Request $request, Campaign $campaign, Journal $...
method destroy (line 80) | public function destroy(Campaign $campaign, Journal $journal)
FILE: app/Http/Controllers/Api/v1/LocationApiController.php
class LocationApiController (line 14) | class LocationApiController extends MiscApiController
method index (line 21) | public function index(Campaign $campaign)
method show (line 36) | public function show(Campaign $campaign, Location $location)
method store (line 49) | public function store(Request $request, Campaign $campaign)
method update (line 65) | public function update(Request $request, Campaign $campaign, Location ...
method destroy (line 80) | public function destroy(Campaign $campaign, Location $location)
FILE: app/Http/Controllers/Api/v1/MapApiController.php
class MapApiController (line 14) | class MapApiController extends MiscApiController
method index (line 21) | public function index(Campaign $campaign)
method show (line 36) | public function show(Campaign $campaign, Map $map)
method store (line 49) | public function store(Request $request, Campaign $campaign)
method update (line 65) | public function update(Request $request, Campaign $campaign, Map $map)
method destroy (line 80) | public function destroy(Campaign $campaign, Map $map)
FILE: app/Http/Controllers/Api/v1/MapGroupApiController.php
class MapGroupApiController (line 14) | class MapGroupApiController extends ApiController
method index (line 21) | public function index(Campaign $campaign, Map $map)
method show (line 32) | public function show(Campaign $campaign, Map $map, MapGroup $mapGroup)
method store (line 40) | public function store(Request $request, Campaign $campaign, Map $map)
method update (line 53) | public function update(
method destroy (line 71) | public function destroy(
FILE: app/Http/Controllers/Api/v1/MapLayerApiController.php
class MapLayerApiController (line 14) | class MapLayerApiController extends ApiController
method index (line 21) | public function index(Campaign $campaign, Map $map)
method show (line 32) | public function show(Campaign $campaign, Map $map, MapLayer $mapLayer)
method store (line 40) | public function store(Request $request, Campaign $campaign, Map $map)
method update (line 60) | public function update(
method destroy (line 78) | public function destroy(
FILE: app/Http/Controllers/Api/v1/MapMarkerApiController.php
class MapMarkerApiController (line 14) | class MapMarkerApiController extends ApiController
method index (line 21) | public function index(Campaign $campaign, Map $map)
method show (line 32) | public function show(Campaign $campaign, Map $map, MapMarker $mapMarker)
method store (line 45) | public function store(Request $request, Campaign $campaign, Map $map)
method update (line 61) | public function update(
method destroy (line 79) | public function destroy(
FILE: app/Http/Controllers/Api/v1/MiscApiController.php
class MiscApiController (line 9) | class MiscApiController extends ApiController
method __construct (line 11) | public function __construct(
method crudSave (line 16) | protected function crudSave(MiscModel $model, array $data): void
FILE: app/Http/Controllers/Api/v1/NoteApiController.php
class NoteApiController (line 14) | class NoteApiController extends MiscApiController
method index (line 21) | public function index(Campaign $campaign)
method show (line 36) | public function show(Campaign $campaign, Note $note)
method store (line 49) | public function store(Request $request, Campaign $campaign)
method update (line 65) | public function update(Request $request, Campaign $campaign, Note $note)
method destroy (line 80) | public function destroy(Campaign $campaign, Note $note)
FILE: app/Http/Controllers/Api/v1/OrganisationApiController.php
class OrganisationApiController (line 14) | class OrganisationApiController extends MiscApiController
method index (line 21) | public function index(Campaign $campaign)
method show (line 36) | public function show(Campaign $campaign, Organisation $organisation)
method store (line 49) | public function store(Request $request, Campaign $campaign)
method update (line 66) | public function update(Request $request, Campaign $campaign, Organisat...
method destroy (line 81) | public function destroy(Campaign $campaign, Organisation $organisation)
FILE: app/Http/Controllers/Api/v1/OrganisationMemberApiController.php
class OrganisationMemberApiController (line 14) | class OrganisationMemberApiController extends ApiController
method index (line 21) | public function index(Campaign $campaign, Organisation $organisation)
method show (line 32) | public function show(Campaign $campaign, Organisation $organisation, O...
method store (line 45) | public function store(Request $request, Campaign $campaign, Organisati...
method update (line 59) | public function update(
method destroy (line 77) | public function destroy(
FILE: app/Http/Controllers/Api/v1/PostApiController.php
class PostApiController (line 14) | class PostApiController extends ApiController
method index (line 21) | public function index(Campaign $campaign, Entity $entity)
method show (line 32) | public function show(Campaign $campaign, Entity $entity, Post $post)
method store (line 45) | public function store(Request $request, Campaign $campaign, Entity $en...
method update (line 60) | public function update(Request $request, Campaign $campaign, Entity $e...
method destroy (line 75) | public function destroy(
FILE: app/Http/Controllers/Api/v1/PostLayoutApiController.php
class PostLayoutApiController (line 9) | class PostLayoutApiController extends Controller
method index (line 11) | public function index()
FILE: app/Http/Controllers/Api/v1/PostRecoveryApiController.php
class PostRecoveryApiController (line 12) | class PostRecoveryApiController extends ApiController
method __construct (line 16) | public function __construct(RecoveryService $service)
method index (line 28) | public function index(Campaign $campaign)
method recover (line 40) | public function recover(Request $request, Campaign $campaign)
FILE: app/Http/Controllers/Api/v1/ProfileApiController.php
class ProfileApiController (line 7) | class ProfileApiController extends ApiController
method index (line 9) | public function index()
FILE: app/Http/Controllers/Api/v1/QuestApiController.php
class QuestApiController (line 14) | class QuestApiController extends MiscApiController
method index (line 21) | public function index(Campaign $campaign)
method show (line 36) | public function show(Campaign $campaign, Quest $quest)
method store (line 49) | public function store(Request $request, Campaign $campaign)
method update (line 66) | public function update(Request $request, Campaign $campaign, Quest $qu...
method destroy (line 81) | public function destroy(Campaign $campaign, Quest $quest)
FILE: app/Http/Controllers/Api/v1/QuestElementApiController.php
class QuestElementApiController (line 15) | class QuestElementApiController extends ApiController
method index (line 22) | public function index(Campaign $campaign, Quest $quest)
method show (line 33) | public function show(Campaign $campaign, Quest $quest, QuestElement $q...
method store (line 46) | public function store(RequestElement $requestElement, Campaign $campai...
method update (line 61) | public function update(
method destroy (line 79) | public function destroy(
FILE: app/Http/Controllers/Api/v1/RaceApiController.php
class RaceApiController (line 14) | class RaceApiController extends MiscApiController
method index (line 21) | public function index(Campaign $campaign)
method show (line 37) | public function show(Campaign $campaign, Race $race)
method store (line 50) | public function store(Request $request, Campaign $campaign)
method update (line 66) | public function update(Request $request, Campaign $campaign, Race $race)
method destroy (line 81) | public function destroy(Campaign $campaign, Race $race)
FILE: app/Http/Controllers/Api/v1/RecentEntityApiController.php
class RecentEntityApiController (line 11) | class RecentEntityApiController extends ApiController
method index (line 18) | public function index(Campaign $campaign)
FILE: app/Http/Controllers/Api/v1/RelationApiController.php
class RelationApiController (line 10) | class RelationApiController extends ApiController
method index (line 17) | public function index(Campaign $campaign)
FILE: app/Http/Controllers/Api/v1/ReminderApiController.php
class ReminderApiController (line 14) | class ReminderApiController extends ApiController
method index (line 21) | public function index(Campaign $campaign, Entity $entity)
method show (line 32) | public function show(Campaign $campaign, Entity $entity, Reminder $rem...
method store (line 45) | public function store(Request $request, Campaign $campaign, Entity $en...
method update (line 61) | public function update(Request $request, Campaign $campaign, Entity $e...
method destroy (line 76) | public function destroy(
FILE: app/Http/Controllers/Api/v1/SearchApiController.php
class SearchApiController (line 12) | class SearchApiController extends ApiController
method __construct (line 14) | public function __construct(protected EntityTypeService $entityTypeSer...
method index (line 21) | public function index(Request $request, Campaign $campaign, ?string $s...
FILE: app/Http/Controllers/Api/v1/TagApiController.php
class TagApiController (line 14) | class TagApiController extends MiscApiController
method index (line 21) | public function index(Campaign $campaign)
method show (line 36) | public function show(Campaign $campaign, Tag $tag)
method store (line 49) | public function store(Request $request, Campaign $campaign)
method update (line 65) | public function update(Request $request, Campaign $campaign, Tag $tag)
method destroy (line 80) | public function destroy(Campaign $campaign, Tag $tag)
FILE: app/Http/Controllers/Api/v1/TimelineApiController.php
class TimelineApiController (line 14) | class TimelineApiController extends MiscApiController
method index (line 21) | public function index(Campaign $campaign)
method show (line 36) | public function show(Campaign $campaign, Timeline $timeline)
method store (line 49) | public function store(Request $request, Campaign $campaign)
method update (line 65) | public function update(Request $request, Campaign $campaign, Timeline ...
method destroy (line 80) | public function destroy(Campaign $campaign, Timeline $timeline)
FILE: app/Http/Controllers/Api/v1/TimelineElementApiController.php
class TimelineElementApiController (line 14) | class TimelineElementApiController extends ApiController
method index (line 21) | public function index(Campaign $campaign, Timeline $timeline)
method show (line 32) | public function show(Campaign $campaign, Timeline $timeline, TimelineE...
method store (line 45) | public function store(Request $request, Campaign $campaign, Timeline $...
method update (line 60) | public function update(
method destroy (line 78) | public function destroy(
FILE: app/Http/Controllers/Api/v1/TimelineEraApiController.php
class TimelineEraApiController (line 14) | class TimelineEraApiController extends ApiController
method index (line 21) | public function index(Campaign $campaign, Timeline $timeline)
method show (line 32) | public function show(Campaign $campaign, Timeline $timeline, TimelineE...
method store (line 45) | public function store(Request $request, Campaign $campaign, Timeline $...
method update (line 62) | public function update(
method destroy (line 80) | public function destroy(
FILE: app/Http/Controllers/Api/v1/VisibilityController.php
class VisibilityController (line 9) | class VisibilityController extends Controller
method index (line 11) | public function index()
FILE: app/Http/Controllers/Attributes/ApiController.php
class ApiController (line 13) | class ApiController extends Controller
method __construct (line 18) | public function __construct(protected ApiService $apiService) {}
method index (line 20) | public function index(Campaign $campaign, EntityType $entityType)
method entity (line 42) | public function entity(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Auth/AuthController.php
class AuthController (line 17) | class AuthController extends Controller
method __construct (line 31) | public function __construct(protected JoinService $referralService)
method redirectToProvider (line 41) | public function redirectToProvider($provider)
method handleProviderCallback (line 61) | public function handleProviderCallback($provider)
method findOrCreateUser (line 98) | public function findOrCreateUser(mixed $user, mixed $provider)
method logout (line 136) | public function logout(Request $request)
FILE: app/Http/Controllers/Auth/ConfirmPasswordController.php
class ConfirmPasswordController (line 9) | class ConfirmPasswordController extends Controller
method __construct (line 35) | public function __construct()
FILE: app/Http/Controllers/Auth/ForgotPasswordController.php
class ForgotPasswordController (line 10) | class ForgotPasswordController extends Controller
method validateEmail (line 24) | protected function validateEmail(Request $request)
method rules (line 29) | protected function rules(): array
FILE: app/Http/Controllers/Auth/LoginController.php
class LoginController (line 14) | class LoginController extends Controller
method __construct (line 35) | public function __construct(UserAuthenticatedService $userAuthService)
method loginAsUser (line 46) | public function loginAsUser(Request $request, User $user)
method loginAs (line 60) | public function loginAs(Request $request)
method authenticated (line 72) | protected function authenticated(Request $request, $user)
method redirectTo (line 79) | protected function redirectTo(Request $request): string
method validateLogin (line 87) | protected function validateLogin(Request $request)
FILE: app/Http/Controllers/Auth/RegisterController.php
class RegisterController (line 16) | class RegisterController extends Controller
method __construct (line 35) | public function __construct(protected JoinService $referralService)
method validator (line 46) | protected function validator(array $data)
method create (line 65) | protected function create(array $data)
method redirectTo (line 79) | protected function redirectTo(): string
FILE: app/Http/Controllers/Auth/ResetPasswordController.php
class ResetPasswordController (line 11) | class ResetPasswordController extends Controller
method __construct (line 32) | public function __construct()
method rules (line 42) | protected function rules()
FILE: app/Http/Controllers/Auth/VerificationController.php
class VerificationController (line 9) | class VerificationController extends Controller
method __construct (line 35) | public function __construct()
FILE: app/Http/Controllers/Billing/HistoryController.php
class HistoryController (line 11) | class HistoryController extends Controller
method __construct (line 16) | public function __construct()
method index (line 24) | public function index(Request $request)
method download (line 38) | public function download(Request $request, $invoice)
FILE: app/Http/Controllers/Billing/PaymentMethodController.php
class PaymentMethodController (line 13) | class PaymentMethodController extends Controller
method __construct (line 20) | public function __construct(CurrencyService $currencyService)
method index (line 29) | public function index()
method currency (line 56) | public function currency()
method save (line 66) | public function save(UserBillingStore $request)
FILE: app/Http/Controllers/Bookmarks/RandomController.php
class RandomController (line 10) | class RandomController extends Controller
method __construct (line 12) | public function __construct(protected RandomEntityService $service) {}
method index (line 14) | public function index(Campaign $campaign, Bookmark $bookmark)
FILE: app/Http/Controllers/Bookmarks/ReorderController.php
class ReorderController (line 16) | class ReorderController extends Controller
method __construct (line 20) | public function __construct(BookmarkService $service)
method index (line 30) | public function index(Campaign $campaign)
method save (line 47) | public function save(ReorderBookmarks $request, Campaign $campaign)
FILE: app/Http/Controllers/Bragi/BragiController.php
class BragiController (line 10) | class BragiController extends Controller
method __construct (line 12) | public function __construct(protected BragiService $service)
method index (line 17) | public function index(Campaign $campaign)
method generate (line 27) | public function generate(BragiRequest $request, Campaign $campaign)
FILE: app/Http/Controllers/BulkController.php
class BulkController (line 16) | class BulkController extends Controller
method __construct (line 28) | public function __construct(protected BulkService $bulkService) {}
method index (line 30) | public function index(BulkRequest $request, Campaign $campaign)
method batch (line 79) | protected function batch()
method models (line 109) | protected function models(): array
FILE: app/Http/Controllers/Bulks/BatchController.php
class BatchController (line 14) | class BatchController extends Controller
method __construct (line 16) | public function __construct(
method index (line 22) | public function index(Request $request, Campaign $campaign, EntityType...
method apply (line 33) | public function apply(Request $request, Campaign $campaign, EntityType...
method resolveBulk (line 60) | private function resolveBulk(EntityType $entityType): Bulk
FILE: app/Http/Controllers/Bulks/CopyController.php
class CopyController (line 13) | class CopyController extends Controller
method __construct (line 15) | public function __construct(
method index (line 22) | public function index(Request $request, Campaign $campaign, EntityType...
method apply (line 38) | public function apply(Copy $request, Campaign $campaign, EntityType $e...
FILE: app/Http/Controllers/Bulks/DeleteController.php
class DeleteController (line 12) | class DeleteController extends Controller
method __construct (line 14) | public function __construct(
method index (line 20) | public function index(Request $request, Campaign $campaign, EntityType...
method apply (line 35) | public function apply(Request $request, Campaign $campaign, EntityType...
FILE: app/Http/Controllers/Bulks/DeleteRelationController.php
class DeleteRelationController (line 11) | class DeleteRelationController extends Controller
method __construct (line 13) | public function __construct(
method index (line 19) | public function index(Campaign $campaign)
method apply (line 28) | public function apply(Request $request, Campaign $campaign)
FILE: app/Http/Controllers/Bulks/PermissionController.php
class PermissionController (line 11) | class PermissionController extends Controller
method __construct (line 13) | public function __construct(
method index (line 19) | public function index(Request $request, Campaign $campaign, EntityType...
method apply (line 29) | public function apply(Request $request, Campaign $campaign, EntityType...
FILE: app/Http/Controllers/Bulks/PrintController.php
class PrintController (line 12) | class PrintController extends Controller
method __construct (line 14) | public function __construct(
method index (line 20) | public function index(Request $request, Campaign $campaign, EntityType...
FILE: app/Http/Controllers/Bulks/TemplateController.php
class TemplateController (line 13) | class TemplateController extends Controller
method __construct (line 15) | public function __construct(
method index (line 22) | public function index(Request $request, Campaign $campaign, EntityType...
method apply (line 36) | public function apply(Template $request, Campaign $campaign, EntityTyp...
FILE: app/Http/Controllers/Bulks/TransformController.php
class TransformController (line 13) | class TransformController extends Controller
method __construct (line 15) | public function __construct(
method index (line 22) | public function index(Request $request, Campaign $campaign, EntityType...
method apply (line 38) | public function apply(Transform $request, Campaign $campaign, EntityTy...
FILE: app/Http/Controllers/Calendar/CalendarWeatherController.php
class CalendarWeatherController (line 13) | class CalendarWeatherController extends Controller
method __construct (line 17) | public function __construct(CalendarService $calendarService)
method index (line 22) | public function index(Campaign $campaign, Calendar $calendar)
method create (line 27) | public function create(Campaign $campaign, Calendar $calendar)
method store (line 52) | public function store(AddCalendarWeather $request, Campaign $campaign,...
method update (line 72) | public function update(AddCalendarWeather $request, Campaign $campaign...
method destroy (line 92) | public function destroy(Campaign $campaign, Calendar $calendar, Calend...
FILE: app/Http/Controllers/Calendars/Bulks/EntityEventController.php
class EntityEventController (line 13) | class EntityEventController extends Controller
method index (line 18) | public function index(Request $request, Campaign $campaign, Calendar $...
FILE: app/Http/Controllers/Calendars/EventController.php
class EventController (line 26) | class EventController extends Controller
method __construct (line 37) | public function __construct(CalendarService $calendarService, LengthVa...
method index (line 43) | public function index(Campaign $campaign, Calendar $calendar)
method create (line 90) | public function create(Campaign $campaign, Calendar $calendar)
method store (line 110) | public function store(AddCalendarEvent $request, Campaign $campaign, C...
method eventLength (line 148) | public function eventLength(Campaign $campaign, Calendar $calendar, Va...
FILE: app/Http/Controllers/Campaign/AchievementController.php
class AchievementController (line 12) | class AchievementController extends Controller
method __construct (line 14) | public function __construct(protected AchievementService $service) {}
method index (line 16) | public function index(Campaign $campaign)
FILE: app/Http/Controllers/Campaign/ApplicationController.php
class ApplicationController (line 13) | class ApplicationController extends Controller
method __construct (line 15) | public function __construct(protected ApplicationService $service)
method index (line 20) | public function index(Campaign $campaign)
method show (line 40) | public function show(Campaign $campaign, Application $application)
method edit (line 62) | public function edit(Campaign $campaign, Application $application)
method update (line 85) | public function update(PatchCampaignApplication $request, Campaign $ca...
method toggle (line 111) | public function toggle(Campaign $campaign)
method toggleSave (line 118) | public function toggleSave(StoreCampaignApplicationStatus $request, Ca...
FILE: app/Http/Controllers/Campaign/ApplicationDashboardController.php
class ApplicationDashboardController (line 10) | class ApplicationDashboardController extends Controller
method __construct (line 12) | public function __construct()
method index (line 17) | public function index(Campaign $campaign)
method store (line 28) | public function store(Campaign $campaign)
FILE: app/Http/Controllers/Campaign/ApplicationSetupController.php
class ApplicationSetupController (line 15) | class ApplicationSetupController extends Controller
method __construct (line 17) | public function __construct(protected ApplicationService $service, pro...
method setup (line 22) | public function setup(Campaign $campaign)
method saveSetup (line 58) | public function saveSetup(StoreCampaignSetup $request, Campaign $campa...
FILE: app/Http/Controllers/Campaign/ApplyController.php
class ApplyController (line 12) | class ApplyController extends Controller
method __construct (line 14) | public function __construct(protected ApplicationService $service)
method index (line 19) | public function index(Campaign $campaign)
method save (line 41) | public function save(StoreCampaignApplication $request, Campaign $camp...
method remove (line 64) | public function remove(Campaign $campaign)
FILE: app/Http/Controllers/Campaign/CreateController.php
class CreateController (line 15) | class CreateController extends Controller
method __construct (line 17) | public function __construct(
method index (line 26) | public function index(Request $request)
method store (line 55) | public function store(StoreCampaign $request)
FILE: app/Http/Controllers/Campaign/CssController.php
class CssController (line 10) | class CssController extends Controller
method index (line 17) | public function index(Campaign $campaign)
FILE: app/Http/Controllers/Campaign/DashboardController.php
class DashboardController (line 13) | class DashboardController extends Controller
method __construct (line 15) | public function __construct(protected DashboardService $service)
method index (line 24) | public function index()
method create (line 29) | public function create(Campaign $campaign)
method store (line 46) | public function store(StoreCampaignDashboard $request, Campaign $campa...
method edit (line 68) | public function edit(Campaign $campaign, CampaignDashboard $campaignDa...
method update (line 77) | public function update(Campaign $campaign, CampaignDashboard $campaign...
method destroy (line 93) | public function destroy(Campaign $campaign, CampaignDashboard $campaig...
method cta (line 106) | protected function cta(Campaign $campaign)
FILE: app/Http/Controllers/Campaign/DashboardHeaderController.php
class DashboardHeaderController (line 15) | class DashboardHeaderController extends Controller
method edit (line 22) | public function edit(Campaign $campaign, ?CampaignDashboardWidget $cam...
method update (line 44) | public function update(UpdateCampaignHeader $request, Campaign $campai...
FILE: app/Http/Controllers/Campaign/DashboardWidgetController.php
class DashboardWidgetController (line 13) | class DashboardWidgetController extends Controller
method __construct (line 20) | public function __construct(protected EntityTypeService $entityTypeSer...
method index (line 25) | public function index(Campaign $campaign)
method create (line 44) | public function create(Campaign $campaign)
method store (line 79) | public function store(StoreCampaignDashboardWidget $request, Campaign ...
method show (line 99) | public function show(Campaign $campaign, CampaignDashboardWidget $camp...
method edit (line 104) | public function edit(Campaign $campaign, CampaignDashboardWidget $camp...
method update (line 128) | public function update(StoreCampaignDashboardWidget $request, Campaign...
method destroy (line 148) | public function destroy(Campaign $campaign, CampaignDashboardWidget $c...
FILE: app/Http/Controllers/Campaign/DefaultImageController.php
class DefaultImageController (line 18) | class DefaultImageController extends Controller
method __construct (line 20) | public function __construct(
method index (line 32) | public function index(Campaign $campaign)
method create (line 53) | public function create(Campaign $campaign)
method store (line 71) | public function store(DefaultImageStore $request, Campaign $campaign)
method destroy (line 101) | public function destroy(DefaultImageDestroy $request, Campaign $campaign)
method reset (line 125) | public function reset(Campaign $campaign)
FILE: app/Http/Controllers/Campaign/DefaultsController.php
class DefaultsController (line 9) | class DefaultsController extends Controller
method index (line 11) | public function index(Campaign $campaign)
method save (line 18) | public function save(StoreDefaults $request, Campaign $campaign)
FILE: app/Http/Controllers/Campaign/DeleteController.php
class DeleteController (line 10) | class DeleteController extends Controller
method __construct (line 14) | public function __construct(DeletionService $deletionService)
method show (line 20) | public function show(Campaign $campaign)
method destroy (line 28) | public function destroy(DeleteCampaign $request, Campaign $campaign)
FILE: app/Http/Controllers/Campaign/EntityTypeController.php
class EntityTypeController (line 13) | class EntityTypeController extends Controller
method __construct (line 15) | public function __construct(
method create (line 19) | public function create(Campaign $campaign)
method store (line 45) | public function store(StoreEntityType $request, Campaign $campaign)
method edit (line 70) | public function edit(Campaign $campaign, EntityType $entityType)
method update (line 94) | public function update(StoreEntityType $request, Campaign $campaign, E...
method toggle (line 121) | public function toggle(Campaign $campaign, EntityType $entityType)
method confirm (line 145) | public function confirm(Campaign $campaign, EntityType $entityType)
method destroy (line 158) | public function destroy(DeleteEntityType $request, Campaign $campaign,...
FILE: app/Http/Controllers/Campaign/ExportController.php
class ExportController (line 11) | class ExportController extends Controller
method __construct (line 13) | public function __construct(protected QueueService $queueService)
method index (line 18) | public function index(Campaign $campaign)
method export (line 30) | public function export(Request $request, Campaign $campaign)
FILE: app/Http/Controllers/Campaign/FollowController.php
class FollowController (line 9) | class FollowController extends Controller
method __construct (line 13) | public function __construct(FollowService $service)
method update (line 19) | public function update(Campaign $campaign)
FILE: app/Http/Controllers/Campaign/ImageController.php
class ImageController (line 9) | class ImageController extends Controller
method index (line 11) | public function index(Campaign $campaign)
method save (line 19) | public function save(StoreImage $request, Campaign $campaign)
FILE: app/Http/Controllers/Campaign/ImportController.php
class ImportController (line 12) | class ImportController extends Controller
method __construct (line 16) | public function __construct(PrepareService $prepareService)
method index (line 22) | public function index(Campaign $campaign)
method csv (line 59) | public function csv(Campaign $campaign, CampaignImport $campaignImport)
FILE: app/Http/Controllers/Campaign/InviteController.php
class InviteController (line 15) | class InviteController extends Controller
method __construct (line 22) | public function __construct()
method index (line 30) | public function index()
method show (line 35) | public function show(Campaign $campaign, CampaignInvite $campaignInvite)
method create (line 47) | public function create(Campaign $campaign)
method store (line 65) | public function store(StoreCampaignInvite $request, Campaign $campaign)
method destroy (line 97) | public function destroy(Campaign $campaign, CampaignInvite $campaignIn...
FILE: app/Http/Controllers/Campaign/LeaveController.php
class LeaveController (line 11) | class LeaveController extends Controller
method __construct (line 13) | public function __construct(
method index (line 20) | public function index(Campaign $campaign)
method process (line 27) | public function process(Campaign $campaign)
FILE: app/Http/Controllers/Campaign/LogController.php
class LogController (line 10) | class LogController extends Controller
method __construct (line 12) | public function __construct()
method index (line 17) | public function index(Campaign $campaign)
FILE: app/Http/Controllers/Campaign/MemberController.php
class MemberController (line 13) | class MemberController extends Controller
method __construct (line 20) | public function __construct()
method switch (line 32) | public function switch(Campaign $campaign, CampaignUser $campaignUser,...
method back (line 55) | public function back(Campaign $campaign)
method delete (line 67) | public function delete(Campaign $campaign, CampaignUser $campaignUser)
FILE: app/Http/Controllers/Campaign/Members/RoleController.php
class RoleController (line 16) | class RoleController extends Controller
method __construct (line 23) | public function __construct(
method index (line 34) | public function index(Campaign $campaign, CampaignUser $campaignUser)
method save (line 50) | public function save(UpdateUserRoles $request, Campaign $campaign, Cam...
FILE: app/Http/Controllers/Campaign/ModuleController.php
class ModuleController (line 14) | class ModuleController extends Controller
method __construct (line 16) | public function __construct(
method index (line 22) | public function index(Campaign $campaign)
method edit (line 44) | public function edit(Campaign $campaign, EntityType $entityType)
method update (line 69) | public function update(UpdateModuleName $request, Campaign $campaign, ...
method reset (line 87) | public function reset(Campaign $campaign)
method toggle (line 108) | public function toggle(Campaign $campaign, EntityType $entityType)
method toggleFeature (line 134) | public function toggleFeature(Campaign $campaign, string $module)
FILE: app/Http/Controllers/Campaign/PluginController.php
class PluginController (line 13) | class PluginController extends Controller
method __construct (line 15) | public function __construct(protected PluginService $service) {}
method index (line 17) | public function index(Campaign $campaign)
method delete (line 56) | public function delete(Request $request, Campaign $campaign, Plugin $p...
FILE: app/Http/Controllers/Campaign/Plugins/BulkController.php
class BulkController (line 12) | class BulkController extends Controller
method __construct (line 14) | public function __construct(protected PluginService $service)
method index (line 19) | public function index(Campaign $campaign)
FILE: app/Http/Controllers/Campaign/Plugins/CssController.php
class CssController (line 10) | class CssController extends Controller
method index (line 12) | public function index(Campaign $campaign)
FILE: app/Http/Controllers/Campaign/Plugins/ImportController.php
class ImportController (line 14) | class ImportController extends Controller
method __construct (line 16) | public function __construct(protected ImporterService $importerService)
method index (line 21) | public function index(Campaign $campaign, Plugin $plugin)
method process (line 35) | public function process(Request $request, Campaign $campaign, Plugin $...
FILE: app/Http/Controllers/Campaign/Plugins/ToggleController.php
class ToggleController (line 11) | class ToggleController extends Controller
method __construct (line 13) | public function __construct(protected PluginService $service)
method enable (line 18) | public function enable(Campaign $campaign, Plugin $plugin)
method disable (line 31) | public function disable(Campaign $campaign, Plugin $plugin)
FILE: app/Http/Controllers/Campaign/Plugins/UpdateController.php
class UpdateController (line 12) | class UpdateController extends Controller
method __construct (line 14) | public function __construct(protected PluginService $service)
method index (line 19) | public function index(Campaign $campaign, Plugin $plugin)
method update (line 34) | public function update(Request $request, Campaign $campaign, Plugin $p...
FILE: app/Http/Controllers/Campaign/RecoveryController.php
class RecoveryController (line 13) | class RecoveryController extends Controller
method __construct (line 15) | public function __construct(
method index (line 23) | public function index(Campaign $campaign)
method setup (line 30) | public function setup(Campaign $campaign)
method recover (line 42) | public function recover(Request $request, Campaign $campaign)
FILE: app/Http/Controllers/Campaign/RoleController.php
class RoleController (line 21) | class RoleController extends Controller
method __construct (line 32) | public function __construct(RolePermissionService $rolePermissionServi...
method index (line 43) | public function index(Campaign $campaign)
method create (line 79) | public function create(Campaign $campaign)
method duplicate (line 98) | public function duplicate(Campaign $campaign, CampaignRole $campaignRole)
method store (line 112) | public function store(StoreCampaignRole $request, Campaign $campaign)
method show (line 135) | public function show(Campaign $campaign, CampaignRole $campaignRole)
method edit (line 159) | public function edit(Campaign $campaign, CampaignRole $campaignRole)
method update (line 171) | public function update(StoreCampaignRole $request, Campaign $campaign,...
method destroy (line 182) | public function destroy(Campaign $campaign, CampaignRole $campaignRole)
method savePermissions (line 197) | public function savePermissions(Request $request, Campaign $campaign, ...
method admin (line 215) | public function admin(Campaign $campaign)
method public (line 231) | public function public(Campaign $campaign)
method search (line 245) | public function search(Request $request, Campaign $campaign)
method toggle (line 274) | public function toggle(Campaign $campaign, CampaignRole $campaignRole,...
method bulk (line 296) | public function bulk(Campaign $campaign)
FILE: app/Http/Controllers/Campaign/RoleUserController.php
class RoleUserController (line 13) | class RoleUserController extends Controller
method __construct (line 19) | public function __construct(MemberService $service)
method index (line 26) | public function index(Campaign $campaign)
method create (line 31) | public function create(Campaign $campaign, CampaignRole $campaignRole)
method store (line 39) | public function store(StoreCampaignRoleUser $request, Campaign $campai...
method show (line 60) | public function show(Campaign $campaign, CampaignRole $campaignRole, C...
method destroy (line 66) | public function destroy(Campaign $campaign, CampaignRole $campaignRole...
FILE: app/Http/Controllers/Campaign/ShareController.php
class ShareController (line 13) | class ShareController extends Controller
method __construct (line 15) | public function __construct(protected ShareService $shareService)
method setup (line 23) | public function setup(Campaign $campaign): View
method save (line 33) | public function save(Request $request, Campaign $campaign): JsonResponse
FILE: app/Http/Controllers/Campaign/SidebarController.php
class SidebarController (line 12) | class SidebarController extends Controller
method __construct (line 14) | public function __construct(protected SetupService $service, protected...
method index (line 20) | public function index(Campaign $campaign)
method save (line 35) | public function save(Request $request, Campaign $campaign)
method reset (line 52) | public function reset(Campaign $campaign)
FILE: app/Http/Controllers/Campaign/StatController.php
class StatController (line 10) | class StatController extends Controller
method __construct (line 12) | public function __construct(
method index (line 16) | public function index(Campaign $campaign)
FILE: app/Http/Controllers/Campaign/StyleController.php
class StyleController (line 23) | class StyleController extends Controller
method __construct (line 32) | public function __construct()
method index (line 43) | public function index(Campaign $campaign)
method show (line 70) | public function show(Campaign $campaign, CampaignStyle $campaignStyle)
method create (line 76) | public function create(Campaign $campaign)
method store (line 88) | public function store(StoreCampaignStyle $request, Campaign $campaign)
method edit (line 115) | public function edit(Campaign $campaign, CampaignStyle $campaignStyle)
method update (line 128) | public function update(StoreCampaignStyle $request, Campaign $campaign...
method destroy (line 145) | public function destroy(Campaign $campaign, CampaignStyle $campaignStyle)
method theme (line 156) | public function theme(Campaign $campaign)
method themeSave (line 168) | public function themeSave(StoreCampaignTheme $request, Campaign $campa...
method bulk (line 187) | public function bulk(Campaign $campaign)
method reorder (line 222) | public function reorder(ReorderStyles $request, Campaign $campaign)
method toggle (line 249) | public function toggle(Campaign $campaign, CampaignStyle $campaignStyle)
FILE: app/Http/Controllers/Campaign/ThemeBuilderController.php
class ThemeBuilderController (line 13) | class ThemeBuilderController extends Controller
method __construct (line 15) | public function __construct(protected ThemeBuilderService $themeBuilde...
method index (line 21) | public function index(Campaign $campaign)
method save (line 31) | public function save(StoreTheme $request, Campaign $campaign)
method reset (line 46) | public function reset(Campaign $campaign)
FILE: app/Http/Controllers/Campaign/UserController.php
class UserController (line 19) | class UserController extends Controller
method __construct (line 29) | public function __construct()
method index (line 39) | public function index(Campaign $campaign)
method destroy (line 79) | public function destroy(Campaign $campaign, CampaignUser $campaignUser)
method search (line 94) | public function search(Request $request, Campaign $campaign)
FILE: app/Http/Controllers/Campaign/VanityController.php
class VanityController (line 10) | class VanityController extends Controller
method index (line 12) | public function index(Vanity $request, Campaign $campaign)
FILE: app/Http/Controllers/Campaign/VisibilityController.php
class VisibilityController (line 9) | class VisibilityController extends Controller
method __construct (line 16) | public function __construct()
method edit (line 21) | public function edit(Campaign $campaign)
method save (line 29) | public function save(StoreCampaignVisibility $request, Campaign $campa...
FILE: app/Http/Controllers/Campaign/WebController.php
class WebController (line 9) | class WebController extends Controller
method __construct (line 11) | public function __construct(protected WebService $webService) {}
method index (line 13) | public function index(Campaign $campaign)
method api (line 21) | public function api(Campaign $campaign)
FILE: app/Http/Controllers/Campaign/WebhookController.php
class WebhookController (line 20) | class WebhookController extends Controller
method __construct (line 24) | public function __construct(protected SaveService $service)
method index (line 34) | public function index(Campaign $campaign)
method create (line 67) | public function create(Campaign $campaign)
method store (line 83) | public function store(StoreWebhook $request, Campaign $campaign)
method edit (line 105) | public function edit(Campaign $campaign, Webhook $webhook)
method update (line 115) | public function update(StoreWebhook $request, Campaign $campaign, Webh...
method destroy (line 131) | public function destroy(Campaign $campaign, Webhook $webhook)
method toggle (line 146) | public function toggle(Campaign $campaign, Webhook $webhook)
method bulk (line 165) | public function bulk(Campaign $campaign)
method test (line 205) | public function test(Campaign $campaign, Webhook $webhook)
FILE: app/Http/Controllers/CampaignBoostController.php
class CampaignBoostController (line 16) | class CampaignBoostController extends Controller
method __construct (line 20) | public function __construct(BoostService $campaignBoostService)
method create (line 26) | public function create()
method store (line 57) | public function store(Request $request)
method show (line 111) | public function show(CampaignBoost $campaignBoost)
method edit (line 116) | public function edit(CampaignBoost $campaignBoost)
method update (line 133) | public function update(Request $request, CampaignBoost $campaignBoost)
method confirm (line 170) | public function confirm(CampaignBoost $campaignBoost)
method destroy (line 188) | public function destroy(CampaignBoost $campaignBoost)
FILE: app/Http/Controllers/Characters/Families/ManagementController.php
class ManagementController (line 16) | class ManagementController extends Controller
method index (line 23) | public function index(Campaign $campaign, Character $character)
method save (line 44) | public function save(Campaign $campaign, Character $character, ManageF...
FILE: app/Http/Controllers/Characters/MemberController.php
class MemberController (line 15) | class MemberController extends Controller
method index (line 22) | public function index(Campaign $campaign, Character $character)
FILE: app/Http/Controllers/Characters/MembershipController.php
class MembershipController (line 19) | class MembershipController extends Controller
method __construct (line 28) | public function __construct()
method index (line 36) | public function index(Campaign $campaign, Character $character)
method create (line 46) | public function create(Campaign $campaign, Character $character)
method store (line 56) | public function store(StoreCharacterOrganisation $request, Campaign $c...
method show (line 77) | public function show(Campaign $campaign, Character $character, Organis...
method edit (line 88) | public function edit(Campaign $campaign, Character $character, Charact...
method update (line 99) | public function update(
method destroy (line 128) | public function destroy(Campaign $campaign, Character $character, Char...
FILE: app/Http/Controllers/Characters/Races/ManagementController.php
class ManagementController (line 16) | class ManagementController extends Controller
method index (line 23) | public function index(Campaign $campaign, Character $character)
method save (line 44) | public function save(Campaign $campaign, Character $character, ManageR...
FILE: app/Http/Controllers/ConfirmController.php
class ConfirmController (line 7) | class ConfirmController extends Controller
method __construct (line 9) | public function __construct()
method index (line 14) | public function index(Campaign $campaign)
FILE: app/Http/Controllers/Controller.php
class Controller (line 10) | class Controller extends BaseController
method callAction (line 16) | public function callAction($method, $parameters)
FILE: app/Http/Controllers/ConversationMessageController.php
class ConversationMessageController (line 16) | class ConversationMessageController extends Controller
method index (line 21) | public function index(Campaign $campaign, Conversation $conversation)
method store (line 33) | public function store(StoreConversationMessage $request, Campaign $cam...
method update (line 51) | public function update(StoreConversationMessage $request, Campaign $ca...
method destroy (line 68) | public function destroy(Campaign $campaign, Conversation $conversation...
FILE: app/Http/Controllers/ConversationParticipantController.php
class ConversationParticipantController (line 10) | class ConversationParticipantController extends Controller
method index (line 12) | public function index(Campaign $campaign, Conversation $conversation)
method store (line 17) | public function store(StoreConversationParticipant $request, Campaign ...
method edit (line 35) | public function edit(Campaign $campaign, Conversation $conversation, C...
method update (line 42) | public function update(
method destroy (line 59) | public function destroy(Campaign $campaign, Conversation $conversation...
FILE: app/Http/Controllers/CookieConsentController.php
class CookieConsentController (line 7) | class CookieConsentController extends Controller
method __construct (line 16) | public function __construct(CountryService $service)
method index (line 21) | public function index()
FILE: app/Http/Controllers/Creatures/CreatureController.php
class CreatureController (line 13) | class CreatureController extends Controller
method index (line 20) | public function index(Campaign $campaign, Creature $creature)
FILE: app/Http/Controllers/Crud/AbilityController.php
class AbilityController (line 12) | class AbilityController extends CrudController
method store (line 27) | public function store(Campaign $campaign, StoreAbility $request)
method show (line 32) | public function show(Campaign $campaign, Ability $ability)
method edit (line 40) | public function edit(Campaign $campaign, Ability $ability)
method update (line 45) | public function update(StoreAbility $request, Campaign $campaign, Abil...
method destroy (line 50) | public function destroy(Campaign $campaign, Ability $ability)
method getEntityType (line 55) | protected function getEntityType(): EntityType
FILE: app/Http/Controllers/Crud/AttributeTemplateController.php
class AttributeTemplateController (line 12) | class AttributeTemplateController extends CrudController
method store (line 26) | public function store(StoreAttributeTemplate $request, Campaign $campa...
method show (line 34) | public function show(Campaign $campaign, AttributeTemplate $attributeT...
method edit (line 42) | public function edit(Campaign $campaign, AttributeTemplate $attributeT...
method update (line 47) | public function update(StoreAttributeTemplate $request, Campaign $camp...
method destroy (line 55) | public function destroy(Campaign $campaign, AttributeTemplate $attribu...
method getEntityType (line 60) | protected function getEntityType(): EntityType
FILE: app/Http/Controllers/Crud/BookmarkController.php
class BookmarkController (line 15) | class BookmarkController extends CrudController
method index (line 38) | public function index(Request $request, Campaign $campaign)
method create (line 48) | public function create(Campaign $campaign)
method store (line 59) | public function store(StoreBookmark $request, Campaign $campaign)
method show (line 67) | public function show(Campaign $campaign, Bookmark $bookmark)
method edit (line 79) | public function edit(Campaign $campaign, Bookmark $bookmark)
method update (line 90) | public function update(StoreBookmark $request, Campaign $campaign, Boo...
method destroy (line 134) | public function destroy(Campaign $campaign, Bookmark $bookmark)
method limitCheckReached (line 139) | protected function limitCheckReached(): bool
method getEntityType (line 144) | protected function getEntityType(): EntityType
method dashboardOptions (line 149) | protected function dashboardOptions(): array
method sidebarParents (line 165) | protected function sidebarParents(): array
FILE: app/Http/Controllers/Crud/CalendarController.php
class CalendarController (line 13) | class CalendarController extends CrudController
method store (line 30) | public function store(StoreCalendar $request, Campaign $campaign)
method show (line 38) | public function show(Campaign $campaign, Calendar $calendar)
method edit (line 46) | public function edit(Campaign $campaign, Calendar $calendar)
method update (line 54) | public function update(StoreCalendar $request, Campaign $campaign, Cal...
method destroy (line 62) | public function destroy(Campaign $campaign, Calendar $calendar)
method monthList (line 67) | public function monthList(Campaign $campaign, Calendar $calendar)
method today (line 83) | public function today(Campaign $campaign, Calendar $calendar)
method getEntityType (line 98) | protected function getEntityType(): EntityType
FILE: app/Http/Controllers/Crud/CampaignController.php
class CampaignController (line 15) | class CampaignController extends Controller
method __construct (line 19) | public function __construct(
method show (line 28) | public function show(Campaign $campaign)
method edit (line 33) | public function edit(Campaign $campaign)
method update (line 70) | public function update(UpdateCampaign $request, Campaign $campaign)
FILE: app/Http/Controllers/Crud/CharacterController.php
class CharacterController (line 18) | class CharacterController extends CrudController
method __construct (line 30) | public function __construct(
method store (line 40) | public function store(StoreCharacter $request, Campaign $campaign)
method show (line 45) | public function show(Campaign $campaign, Character $character)
method edit (line 50) | public function edit(Campaign $campaign, Character $character)
method update (line 55) | public function update(StoreCharacter $request, Campaign $campaign, Ch...
method destroy (line 60) | public function destroy(Campaign $campaign, Character $character)
method afterModelSave (line 65) | protected function afterModelSave(MiscModel $model, array $data): void
method getEntityType (line 70) | protected function getEntityType(): EntityType
FILE: app/Http/Controllers/Crud/ConversationController.php
class ConversationController (line 13) | class ConversationController extends CrudController
method store (line 29) | public function store(StoreConversation $request, Campaign $campaign)
method show (line 34) | public function show(Campaign $campaign, Conversation $conversation)
method edit (line 39) | public function edit(Campaign $campaign, Conversation $conversation)
method update (line 44) | public function update(StoreConversation $request, Campaign $campaign,...
method destroy (line 49) | public function destroy(Campaign $campaign, Conversation $conversation)
method getEntityType (line 54) | protected function getEntityType(): EntityType
FILE: app/Http/Controllers/Crud/CreatureController.php
class CreatureController (line 13) | class CreatureController extends CrudController
method store (line 28) | public function store(Campaign $campaign, StoreCreature $request)
method show (line 33) | public function show(Campaign $campaign, Creature $creature)
method edit (line 38) | public function edit(Campaign $campaign, Creature $creature)
method update (line 43) | public function update(Campaign $campaign, StoreCreature $request, Cre...
method destroy (line 48) | public function destroy(Campaign $campaign, Creature $creature)
method getEntityType (line 53) | protected function getEntityType(): EntityType
FILE: app/Http/Controllers/Crud/DiceRollController.php
class DiceRollController (line 25) | class DiceRollController extends CrudController
method store (line 46) | public function store(Campaign $campaign, StoreDiceRoll $request)
method show (line 56) | public function show(Campaign $campaign, DiceRoll $diceRoll)
method edit (line 67) | public function edit(Campaign $campaign, DiceRoll $diceRoll)
method update (line 80) | public function update(StoreDiceRoll $request, Campaign $campaign, Dic...
method destroy (line 90) | public function destroy(Campaign $campaign, DiceRoll $diceRoll)
method roll (line 100) | public function roll(Campaign $campaign, DiceRoll $diceRoll)
method destroyRoll (line 123) | public function destroyRoll(Campaign $campaign, DiceRoll $diceRoll, Di...
method getEntityType (line 133) | protected function getEntityType(): EntityType
FILE: app/Http/Controllers/Crud/EventController.php
class EventController (line 14) | class EventController extends CrudController
method store (line 26) | public function store(StoreEvent $request, Campaign $campaign)
method show (line 31) | public function show(Campaign $campaign, Event $event)
method edit (line 36) | public function edit(Campaign $campaign, Event $event)
method update (line 41) | public function update(StoreEvent $request, Campaign $campaign, Event ...
method destroy (line 46) | public function destroy(Campaign $campaign, Event $event)
method afterModelSave (line 51) | protected function afterModelSave(MiscModel $model, array $data): void
method getEntityType (line 56) | protected function getEntityType(): EntityType
FILE: app/Http/Controllers/Crud/FamilyController.php
class FamilyController (line 18) | class FamilyController extends CrudController
method __construct (line 30) | public function __construct(
method store (line 40) | public function store(StoreFamily $request, Campaign $campaign)
method show (line 45) | public function show(Campaign $campaign, Family $family)
method edit (line 50) | public function edit(Campaign $campaign, Family $family)
method update (line 55) | public function update(StoreFamily $request, Campaign $campaign, Famil...
method destroy (line 60) | public function destroy(Campaign $campaign, Family $family)
method afterModelSave (line 65) | protected function afterModelSave(MiscModel $model, array $data): void
method getEntityType (line 70) | protected function getEntityType(): EntityType
FILE: app/Http/Controllers/Crud/ItemController.php
class ItemController (line 18) | class ItemController extends CrudController
method __construct (line 30) | public function __construct(
method store (line 43) | public function store(StoreItem $request, Campaign $campaign)
method show (line 51) | public function show(Campaign $campaign, Item $item)
method edit (line 59) | public function edit(Campaign $campaign, Item $item)
method update (line 67) | public function update(StoreItem $request, Campaign $campaign, Item $i...
method destroy (line 75) | public function destroy(Campaign $campaign, Item $item)
method afterModelSave (line 80) | protected function afterModelSave(MiscModel $model, array $data): void
method getEntityType (line 85) | protected function getEntityType(): EntityType
FILE: app/Http/Controllers/Crud/JournalController.php
class JournalController (line 12) | class JournalController extends CrudController
method store (line 27) | public function store(StoreJournal $request, Campaign $campaign)
method show (line 35) | public function show(Campaign $campaign, Journal $journal)
method edit (line 43) | public function edit(Campaign $campaign, Journal $journal)
method update (line 51) | public function update(StoreJournal $request, Campaign $campaign, Jour...
method destroy (line 59) | public function destroy(Campaign $campaign, Journal $journal)
method getEntityType (line 64) | protected function getEntityType(): EntityType
FILE: app/Http/Controllers/Crud/LocationController.php
class LocationController (line 18) | class LocationController extends CrudController
method __construct (line 30) | public function __construct(
method store (line 43) | public function store(StoreLocation $request, Campaign $campaign)
method show (line 51) | public function show(Campaign $campaign, Location $location)
method edit (line 59) | public function edit(Campaign $campaign, Location $location)
method update (line 67) | public function update(StoreLocation $request, Campaign $campaign, Loc...
method destroy (line 75) | public function destroy(Campaign $campaign, Location $location)
method afterModelSave (line 80) | protected function afterModelSave(MiscModel $model, array $data): void
method getEntityType (line 85) | protected function getEntityType(): EntityType
FILE: app/Http/Controllers/Crud/MapController.php
class MapController (line 13) | class MapController extends CrudController
method store (line 28) | public function store(StoreMap $request, Campaign $campaign)
method show (line 36) | public function show(Campaign $campaign, Map $map)
method edit (line 44) | public function edit(Campaign $campaign, Map $map)
method update (line 59) | public function update(StoreMap $request, Campaign $campaign, Map $map)
method destroy (line 67) | public function destroy(Campaign $campaign, Map $map)
method afterModelSave (line 72) | protected function afterModelSave(MiscModel $model, array $data): void
method getEntityType (line 80) | protected function getEntityType(): EntityType
FILE: app/Http/Controllers/Crud/NoteController.php
class NoteController (line 13) | class NoteController extends CrudController
method store (line 28) | public function store(StoreNote $request, Campaign $campaign)
method show (line 33) | public function show(Campaign $campaign, Note $note)
method edit (line 38) | public function edit(Campaign $campaign, Note $note)
method update (line 43) | public function update(StoreNote $request, Campaign $campaign, Note $n...
method destroy (line 48) | public function destroy(Campaign $campaign, Note $note)
method getEntityType (line 53) | protected function getEntityType(): EntityType
FILE: app/Http/Controllers/Crud/OrganisationController.php
class OrganisationController (line 18) | class OrganisationController extends CrudController
method __construct (line 30) | public function __construct(
method store (line 43) | public function store(StoreOrganisation $request, Campaign $campaign)
method show (line 51) | public function show(Campaign $campaign, Organisation $organisation)
method edit (line 59) | public function edit(Campaign $campaign, Organisation $organisation)
method update (line 67) | public function update(StoreOrganisation $request, Campaign $campaign,...
method destroy (line 75) | public function destroy(Campaign $campaign, Organisation $organisation)
method afterModelSave (line 80) | protected function afterModelSave(MiscModel $model, array $data): void
method getEntityType (line 85) | protected function getEntityType(): EntityType
FILE: app/Http/Controllers/Crud/QuestController.php
class QuestController (line 12) | class QuestController extends CrudController
method store (line 24) | public function store(StoreQuest $request, Campaign $campaign)
method show (line 29) | public function show(Campaign $campaign, Quest $quest)
method edit (line 34) | public function edit(Campaign $campaign, Quest $quest)
method update (line 39) | public function update(StoreQuest $request, Campaign $campaign, Quest ...
method destroy (line 44) | public function destroy(Campaign $campaign, Quest $quest)
method getEntityType (line 49) | protected function getEntityType(): EntityType
FILE: app/Http/Controllers/Crud/RaceController.php
class RaceController (line 13) | class RaceController extends CrudController
method store (line 28) | public function store(StoreRace $request, Campaign $campaign)
method show (line 33) | public function show(Campaign $campaign, Race $race)
method edit (line 38) | public function edit(Campaign $campaign, Race $race)
method update (line 43) | public function update(StoreRace $request, Campaign $campaign, Race $r...
method destroy (line 48) | public function destroy(Campaign $campaign, Race $race)
method getEntityType (line 53) | protected function getEntityType(): EntityType
FILE: app/Http/Controllers/Crud/TagController.php
class TagController (line 12) | class TagController extends CrudController
method store (line 27) | public function store(StoreTag $request, Campaign $campaign)
method show (line 35) | public function show(Campaign $campaign, Tag $tag)
method edit (line 43) | public function edit(Campaign $campaign, Tag $tag)
method update (line 51) | public function update(StoreTag $request, Campaign $campaign, Tag $tag)
method destroy (line 59) | public function destroy(Campaign $campaign, Tag $tag)
method getEntityType (line 64) | protected function getEntityType(): EntityType
FILE: app/Http/Controllers/Crud/TimelineController.php
class TimelineController (line 12) | class TimelineController extends CrudController
method store (line 24) | public function store(StoreTimeline $request, Campaign $campaign)
method show (line 32) | public function show(Campaign $campaign, Timeline $timeline)
method edit (line 40) | public function edit(Campaign $campaign, Timeline $timeline)
method update (line 48) | public function update(StoreTimeline $request, Campaign $campaign, Tim...
method destroy (line 56) | public function destroy(Campaign $campaign, Timeline $timeline)
method getEntityType (line 61) | protected function getEntityType(): EntityType
FILE: app/Http/Controllers/CrudController.php
class CrudController (line 48) | class CrudController extends Controller
method __construct (line 110) | public function __construct(
method afterModelSave (line 124) | protected function afterModelSave(MiscModel $model, array $data): void {}
method index (line 126) | public function index(Request $request, Campaign $campaign)
method crudIndex (line 131) | public function crudIndex(Request $request)
method create (line 322) | public function create(Campaign $campaign)
method crudCreate (line 327) | public function crudCreate($params = [])
method crudStore (line 396) | public function crudStore(Request $request, bool $redirectToCreated = ...
method crudShow (line 555) | public function crudShow(Model|MiscModel $model)
method crudEdit (line 568) | public function crudEdit(Model|MiscModel $model, array $params = [])
method crudUpdate (line 634) | public function crudUpdate(Request $request, Model|MiscModel $model)
method crudDestroy (line 759) | public function crudDestroy(Model|MiscModel $model)
method prepareData (line 767) | protected function prepareData(Request $request, MiscModel $model)
method datagridSorter (line 782) | protected function datagridSorter(string $datagridSorter): self
method moduleEnabled (line 793) | protected function moduleEnabled(): bool
method hasLimitCheck (line 801) | protected function hasLimitCheck(bool $value = true): self
method loadTemplates (line 811) | protected function loadTemplates(EntityType $entityType): Collection
method mode (line 833) | protected function mode(): string
method isNested (line 876) | protected function isNested(): bool
FILE: app/Http/Controllers/DashboardController.php
class DashboardController (line 14) | class DashboardController extends Controller
method __construct (line 16) | public function __construct(protected DashboardService $dashboardServi...
method index (line 18) | public function index(Campaign $campaign)
method recent (line 87) | public function recent(Campaign $campaign, $id)
method unmentioned (line 109) | public function unmentioned(Campaign $campaign, $id)
FILE: app/Http/Controllers/Dashboards/GettingStartedController.php
class GettingStartedController (line 9) | class GettingStartedController extends Controller
method __construct (line 11) | public function __construct(protected GettingStartedService $gettingSt...
method index (line 13) | public function index(Campaign $campaign)
FILE: app/Http/Controllers/Dashboards/SetupController.php
class SetupController (line 10) | class SetupController extends Controller
method __construct (line 12) | public function __construct()
method index (line 17) | public function index(Campaign $campaign)
method save (line 37) | public function save(Campaign $campaign)
FILE: app/Http/Controllers/Datagrid2/BulkControllerTrait.php
type BulkControllerTrait (line 9) | trait BulkControllerTrait
method validBulkActions (line 16) | public function validBulkActions(array $values = ['delete', 'edit', 'p...
method bulkProcess (line 21) | public function bulkProcess(Request $request, string $className): int
method bulkBatch (line 58) | public function bulkBatch(string $route, string $view, array $models, ...
FILE: app/Http/Controllers/Datagrids/SubscriptionController.php
class SubscriptionController (line 7) | class SubscriptionController extends Controller
method __construct (line 9) | public function __construct()
method index (line 14) | public function index()
FILE: app/Http/Controllers/DiceRolls/ResultsController.php
class ResultsController (line 10) | class ResultsController extends Controller
method index (line 12) | public function index(Request $request, Campaign $campaign)
FILE: app/Http/Controllers/EditingController.php
class EditingController (line 13) | class EditingController extends Controller
method __construct (line 17) | public function __construct(MultiEditingService $service)
method index (line 22) | public function index(Campaign $campaign)
method confirmHandle (line 62) | private function confirmHandle(Model $model)
method keepAliveHandle (line 72) | private function keepAliveHandle(Model $model)
method confirm (line 84) | public function confirm(Campaign $campaign, Entity $entity)
method confirmCampaign (line 91) | public function confirmCampaign(Campaign $campaign)
method confirmPost (line 98) | public function confirmPost(Campaign $campaign, Entity $entity, Post $...
method confirmQuestElement (line 105) | public function confirmQuestElement(Campaign $campaign, QuestElement $...
method confirmTimelineElement (line 112) | public function confirmTimelineElement(Campaign $campaign, TimelineEle...
method keepAlive (line 119) | public function keepAlive(Campaign $campaign, Entity $entity)
method keepAliveCampaign (line 126) | public function keepAliveCampaign(Campaign $campaign)
method keepAlivePost (line 133) | public function keepAlivePost(Campaign $campaign, Entity $entity, Post...
method keepAliveTimelineElement (line 140) | public function keepAliveTimelineElement(Campaign $campaign, TimelineE...
method keepAliveQuestElement (line 147) | public function keepAliveQuestElement(Campaign $campaign, QuestElement...
FILE: app/Http/Controllers/Entities/Apis/DocumentController.php
class DocumentController (line 10) | class DocumentController extends Controller
method index (line 12) | public function index(Campaign $campaign, Entity $entity)
method mentions (line 22) | protected function mentions(Entity $entity): array
FILE: app/Http/Controllers/Entities/ChildrenController.php
class ChildrenController (line 15) | class ChildrenController extends Controller
method index (line 22) | public function index(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Entities/CreateController.php
class CreateController (line 18) | class CreateController extends Controller
method __construct (line 20) | public function __construct(
method index (line 27) | public function index(Request $request, Campaign $campaign, EntityType...
method store (line 59) | public function store(StoreCustomEntity $request, Campaign $campaign, ...
FILE: app/Http/Controllers/Entities/DeleteController.php
class DeleteController (line 9) | class DeleteController extends Controller
method index (line 11) | public function index(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Entities/EditController.php
class EditController (line 20) | class EditController extends Controller
method __construct (line 25) | public function __construct(
method index (line 33) | public function index(Campaign $campaign, Entity $entity)
method save (line 65) | public function save(Request $request, Campaign $campaign, Entity $ent...
method prepareData (line 182) | protected function prepareData(Request $request, MiscModel $model): array
method fixRequestData (line 194) | protected function fixRequestData(Request $request, Entity $entity): a...
FILE: app/Http/Controllers/Entities/IndexController.php
class IndexController (line 26) | class IndexController extends Controller
method __construct (line 38) | public function __construct(
method index (line 46) | public function index(Request $request, Campaign $campaign, EntityType...
method loadTemplates (line 117) | protected function loadTemplates(Campaign $campaign, EntityType $entit...
method api (line 133) | public function api(Request $request, Campaign $campaign, EntityType $...
method showAds (line 364) | protected function showAds(Campaign $campaign): bool
method isNested (line 388) | protected function isNested(): bool
method layoutMode (line 417) | protected function layoutMode(): string
method perPageValue (line 455) | protected function perPageValue(): int
FILE: app/Http/Controllers/Entities/ListingPreferenceController.php
class ListingPreferenceController (line 12) | class ListingPreferenceController extends Controller
method update (line 14) | public function update(
method destroy (line 36) | public function destroy(
FILE: app/Http/Controllers/Entity/Abilities/ApiController.php
class ApiController (line 10) | class ApiController extends Controller
method __construct (line 14) | public function __construct(AbilityService $service)
method index (line 19) | public function index(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Entity/Abilities/ChargeController.php
class ChargeController (line 12) | class ChargeController extends Controller
method __construct (line 16) | public function __construct(ChargeService $chargeService)
method use (line 21) | public function use(Request $request, Campaign $campaign, Entity $enti...
method reset (line 33) | public function reset(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Entity/Abilities/ImportController.php
class ImportController (line 12) | class ImportController extends Controller
method __construct (line 16) | public function __construct(ImportService $chargeService)
method index (line 21) | public function index(Campaign $campaign, Entity $entity)
method import (line 52) | public function import(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Entity/Abilities/ReorderController.php
class ReorderController (line 12) | class ReorderController extends Controller
method __construct (line 14) | public function __construct(protected ReorderService $reorderService) {}
method index (line 16) | public function index(Campaign $campaign, Entity $entity)
method save (line 57) | public function save(Campaign $campaign, Entity $entity, ReorderAbilit...
FILE: app/Http/Controllers/Entity/AbilityController.php
class AbilityController (line 15) | class AbilityController extends Controller
method index (line 20) | public function index(Campaign $campaign, Entity $entity)
method create (line 50) | public function create(Campaign $campaign, Entity $entity)
method store (line 60) | public function store(StoreEntityAbility $request, Campaign $campaign,...
method show (line 106) | public function show(Campaign $campaign, Entity $entity, EntityAbility...
method edit (line 112) | public function edit(Campaign $campaign, Entity $entity, EntityAbility...
method update (line 127) | public function update(UpdateEntityAbility $request, Campaign $campaig...
method destroy (line 149) | public function destroy(Campaign $campaign, Entity $entity, EntityAbil...
FILE: app/Http/Controllers/Entity/ArchiveController.php
class ArchiveController (line 10) | class ArchiveController extends Controller
method __construct (line 14) | public function __construct(ArchiveService $archiveService)
method update (line 20) | public function update(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Entity/AssetController.php
class AssetController (line 26) | class AssetController extends Controller
method index (line 31) | public function index(Campaign $campaign, Entity $entity)
method show (line 55) | public function show(Campaign $campaign, Entity $entity, EntityAsset $...
method create (line 60) | public function create(Campaign $campaign, Entity $entity)
method store (line 74) | public function store(StoreEntityAssets $request, Campaign $campaign, ...
method storeFile (line 104) | protected function storeFile(StoreEntityAssets $request, Campaign $cam...
method edit (line 130) | public function edit(Campaign $campaign, Entity $entity, EntityAsset $...
method update (line 145) | public function update(StoreEntityAsset $request, Campaign $campaign, ...
method destroy (line 173) | public function destroy(Campaign $campaign, Entity $entity, EntityAsse...
method createFile (line 201) | protected function createFile(Campaign $campaign, Entity $entity)
method createLink (line 219) | protected function createLink(Campaign $campaign, Entity $entity)
method go (line 239) | public function go(Campaign $campaign, Entity $entity, EntityAsset $en...
FILE: app/Http/Controllers/Entity/AttributeController.php
class AttributeController (line 17) | class AttributeController extends Controller
method __construct (line 22) | public function __construct(protected AttributeService $service, prote...
method index (line 24) | public function index(Campaign $campaign, Entity $entity)
method dashboard (line 55) | public function dashboard(Campaign $campaign, Entity $entity)
method edit (line 87) | public function edit(Campaign $campaign, Entity $entity)
method save (line 109) | public function save(SaveAttributes $request, Campaign $campaign, Enti...
method liveEdit (line 129) | public function liveEdit(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Entity/AttributeTemplateController.php
class AttributeTemplateController (line 12) | class AttributeTemplateController extends Controller
method __construct (line 18) | public function __construct(AttributeService $service, TemplateService...
method index (line 26) | public function index(Campaign $campaign, Entity $entity)
method process (line 48) | public function process(ApplyAttributeTemplate $request, Campaign $cam...
FILE: app/Http/Controllers/Entity/Attributes/ApiController.php
class ApiController (line 12) | class ApiController extends Controller
method __construct (line 19) | public function __construct(ApiService $apiService)
method index (line 24) | public function index(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Entity/Attributes/LiveApiController.php
class LiveApiController (line 15) | class LiveApiController extends Controller
method index (line 20) | public function index(Campaign $campaign, Entity $entity)
method store (line 28) | public function store(StoreAttribute $request, Campaign $campaign, Ent...
method update (line 40) | public function update(UpdateAttribute $request, Campaign $campaign, E...
method destroy (line 50) | public function destroy(Campaign $campaign, Entity $entity, Attribute ...
FILE: app/Http/Controllers/Entity/Attributes/LiveController.php
class LiveController (line 12) | class LiveController extends Controller
method index (line 14) | public function index(Campaign $campaign, Entity $entity, Attribute $a...
method save (line 25) | public function save(UpdateEntityAttribute $request, Campaign $campaig...
FILE: app/Http/Controllers/Entity/Connections/MapController.php
class MapController (line 12) | class MapController extends Controller
method __construct (line 17) | public function __construct(protected MapService $mapService) {}
method index (line 19) | public function index(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Entity/Connections/TableController.php
class TableController (line 14) | class TableController extends Controller
method index (line 20) | public function index(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Entity/CopyInventoryController.php
class CopyInventoryController (line 14) | class CopyInventoryController extends Controller
method index (line 23) | public function index(Campaign $campaign, Entity $entity)
method store (line 33) | public function store(CopyInventory $request, Campaign $campaign, Enti...
FILE: app/Http/Controllers/Entity/EntryController.php
class EntryController (line 15) | class EntryController extends Controller
method edit (line 22) | public function edit(Campaign $campaign, Entity $entity)
method update (line 34) | public function update(UpdateEntityEntry $request, Campaign $campaign,...
FILE: app/Http/Controllers/Entity/ExportController.php
class ExportController (line 19) | class ExportController extends Controller
method __construct (line 28) | public function __construct(ExportService $service, MarkdownExportServ...
method json (line 34) | public function json(Campaign $campaign, Entity $entity)
method markdown (line 41) | public function markdown(Campaign $campaign, Entity $entity)
method html (line 63) | public function html(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Entity/GenerateInventoryController.php
class GenerateInventoryController (line 15) | class GenerateInventoryController extends Controller
method __construct (line 19) | public function __construct(protected InventoryService $service) {}
method index (line 26) | public function index(Campaign $campaign, Entity $entity)
method store (line 36) | public function store(GenerateInventory $request, Campaign $campaign, ...
FILE: app/Http/Controllers/Entity/ImageController.php
class ImageController (line 13) | class ImageController extends Controller
method __construct (line 15) | public function __construct()
method focus (line 23) | public function focus(Campaign $campaign, Entity $entity)
method saveFocus (line 37) | public function saveFocus(StoreImageFocus $request, Campaign $campaign...
method replace (line 56) | public function replace(Campaign $campaign, Entity $entity)
method update (line 65) | public function update(UpdateEntityImage $request, Campaign $campaign,...
FILE: app/Http/Controllers/Entity/Inventory/DetailController.php
class DetailController (line 12) | class DetailController extends Controller
method index (line 17) | public function index(Campaign $campaign, Entity $entity, Inventory $i...
FILE: app/Http/Controllers/Entity/InventoryController.php
class InventoryController (line 14) | class InventoryController extends Controller
method index (line 32) | public function index(Campaign $campaign, Entity $entity)
method create (line 53) | public function create(Campaign $campaign, Entity $entity)
method store (line 71) | public function store(StoreInventory $request, Campaign $campaign, Ent...
method show (line 110) | public function show(Campaign $campaign, Entity $entity, Inventory $in...
method edit (line 117) | public function edit(Campaign $campaign, Entity $entity, Inventory $in...
method update (line 134) | public function update(UpdateInventory $request, Campaign $campaign, E...
method destroy (line 151) | public function destroy(Campaign $campaign, Entity $entity, Inventory ...
FILE: app/Http/Controllers/Entity/InventorySectionController.php
class InventorySectionController (line 11) | class InventorySectionController extends Controller
method delete (line 15) | public function delete(Campaign $campaign, Entity $entity, Inventory $...
FILE: app/Http/Controllers/Entity/LogController.php
class LogController (line 12) | class LogController extends Controller
method index (line 14) | public function index(HistoryRequest $request, Campaign $campaign, Ent...
FILE: app/Http/Controllers/Entity/MentionController.php
class MentionController (line 14) | class MentionController extends Controller
method index (line 20) | public function index(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Entity/MoveController.php
class MoveController (line 19) | class MoveController extends Controller
method __construct (line 26) | public function __construct(
method index (line 39) | public function index(Campaign $campaign, Entity $entity)
method move (line 58) | public function move(MoveEntityRequest $request, Campaign $campaign, E...
FILE: app/Http/Controllers/Entity/PermissionController.php
class PermissionController (line 11) | class PermissionController extends Controller
method __construct (line 15) | public function __construct(PermissionService $permissionService)
method view (line 20) | public function view(Campaign $campaign, Entity $entity)
method store (line 27) | public function store(StorePermission $request, Campaign $campaign, En...
FILE: app/Http/Controllers/Entity/PostController.php
class PostController (line 17) | class PostController extends Controller
method __construct (line 22) | public function __construct(
method index (line 27) | public function index(Campaign $campaign, Entity $entity)
method create (line 34) | public function create(Campaign $campaign, Entity $entity, Post $post)
method show (line 77) | public function show(Campaign $campaign, Entity $entity, Post $post)
method store (line 90) | public function store(StorePost $request, Campaign $campaign, Entity $...
method edit (line 124) | public function edit(Campaign $campaign, Entity $entity, Post $post)
method update (line 153) | public function update(StorePost $request, Campaign $campaign, Entity ...
method destroy (line 195) | public function destroy(Campaign $campaign, Entity $entity, Post $post)
FILE: app/Http/Controllers/Entity/Posts/LayoutController.php
class LayoutController (line 9) | class LayoutController extends Controller
method index (line 11) | public function index(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Entity/Posts/LogController.php
class LogController (line 12) | class LogController extends Controller
method index (line 14) | public function index(HistoryRequest $request, Campaign $campaign, Ent...
FILE: app/Http/Controllers/Entity/Posts/MoveController.php
class MoveController (line 13) | class MoveController extends Controller
method __construct (line 15) | public function __construct(protected PostService $service) {}
method index (line 17) | public function index(Campaign $campaign, Entity $entity, Post $post)
method move (line 28) | public function move(MovePostRequest $request, Campaign $campaign, Ent...
FILE: app/Http/Controllers/Entity/Posts/TemplateController.php
class TemplateController (line 10) | class TemplateController extends Controller
method __construct (line 14) | public function __construct(TemplateService $templateService)
method update (line 20) | public function update(Campaign $campaign, Post $post)
FILE: app/Http/Controllers/Entity/Posts/VisibilityController.php
class VisibilityController (line 14) | class VisibilityController extends Controller
method __construct (line 21) | public function __construct()
method index (line 31) | public function index(Campaign $campaign, Entity $entity, Post $post)
method update (line 48) | public function update(EditPostVisibility $request, Campaign $campaign...
FILE: app/Http/Controllers/Entity/PreviewController.php
class PreviewController (line 13) | class PreviewController extends Controller
method __construct (line 22) | public function __construct(PreviewService $service, RecentService $re...
method index (line 28) | public function index(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Entity/PrivacyController.php
class PrivacyController (line 17) | class PrivacyController extends Controller
method __construct (line 21) | public function __construct(PrivacyService $service)
method index (line 31) | public function index(Campaign $campaign, Entity $entity)
method toggle (line 46) | public function toggle(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Entity/ProfileController.php
class ProfileController (line 11) | class ProfileController extends Controller
method index (line 16) | public function index(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Entity/RelationController.php
class RelationController (line 20) | class RelationController extends Controller
method __construct (line 29) | public function __construct(RelatedService $connectionService, Relatio...
method index (line 35) | public function index(Campaign $campaign, Entity $entity)
method create (line 105) | public function create(Campaign $campaign, Entity $entity)
method store (line 118) | public function store(StoreRelation $request, Campaign $campaign, Enti...
method show (line 142) | public function show(Campaign $campaign, Entity $entity, Relation $rel...
method edit (line 147) | public function edit(Campaign $campaign, Entity $entity, Relation $rel...
method update (line 166) | public function update(StoreRelation $request, Campaign $campaign, Ent...
method destroy (line 226) | public function destroy(Campaign $campaign, Entity $entity, Relation $...
method getModeOption (line 274) | protected function getModeOption(bool $post = false)
FILE: app/Http/Controllers/Entity/ReminderController.php
class ReminderController (line 18) | class ReminderController extends Controller
method __construct (line 33) | public function __construct(CalendarService $calendarService)
method index (line 39) | public function index(Campaign $campaign, Entity $entity)
method show (line 73) | public function show(Campaign $campaign, Entity $entity, Reminder $rem...
method create (line 79) | public function create(Campaign $campaign, Entity $entity)
method store (line 101) | public function store(AddCalendarEvent $request, Campaign $campaign, E...
FILE: app/Http/Controllers/Entity/ShareController.php
class ShareController (line 17) | class ShareController extends Controller
method __construct (line 22) | public function __construct(
method setup (line 30) | public function setup(Campaign $campaign, Entity $entity): View
method save (line 43) | public function save(StoreShare $request, Campaign $campaign, Entity $...
FILE: app/Http/Controllers/Entity/ShowController.php
class ShowController (line 14) | class ShowController extends Controller
method __construct (line 19) | public function __construct()
method index (line 25) | public function index(Request $request, Campaign $campaign, Entity $en...
FILE: app/Http/Controllers/Entity/StoryController.php
class StoryController (line 12) | class StoryController extends Controller
method __construct (line 18) | public function __construct(StoryService $service)
method edit (line 23) | public function edit(Campaign $campaign, Entity $entity)
method save (line 33) | public function save(ReorderStories $request, Campaign $campaign, Enti...
method more (line 53) | public function more(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Entity/TagController.php
class TagController (line 16) | class TagController extends Controller
method __construct (line 23) | public function __construct(TagService $tagService)
method create (line 33) | public function create(Campaign $campaign, Entity $entity)
method store (line 48) | public function store(UpdateEntityTags $request, Campaign $campaign, E...
FILE: app/Http/Controllers/Entity/TemplateController.php
class TemplateController (line 10) | class TemplateController extends Controller
method __construct (line 14) | public function __construct(TemplateService $templateService)
method update (line 20) | public function update(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Entity/TooltipController.php
class TooltipController (line 13) | class TooltipController extends Controller
method __construct (line 18) | public function __construct(public TooltipService $tooltipService) {}
method show (line 23) | public function show(Campaign $campaign, Entity $entity)
FILE: app/Http/Controllers/Entity/TransformController.php
class TransformController (line 15) | class TransformController extends Controller
method __construct (line 19) | public function __construct(
method index (line 24) | public function index(Campaign $campaign, Entity $entity)
method transform (line 46) | public function transform(TransformEntityRequest $request, Campaign $c...
FILE: app/Http/Controllers/EntityCreatorController.php
class EntityCreatorController (line 20) | class EntityCreatorController extends Controller
method __construct (line 24) | public function __construct(
method selection (line 35) | public function selection(Request $request, Campaign $campaign)
method form (line 42) | public function form(Request $request, Campaign $campaign, EntityType ...
method post (line 47) | public function post(Request $request, Campaign $campaign)
method store (line 52) | public function store(StoreEntity $request, Campaign $campaign, Entity...
method storePost (line 100) | public function storePost(StorePost $request, Campaign $campaign)
method renderSelection (line 146) | protected function renderSelection(?string $success)
method renderForm (line 159) | protected function renderForm(Request $request, Campaign $campaign, ?E...
method orderedEntityTypes (line 220) | protected function orderedEntityTypes(): Collection
FILE: app/Http/Controllers/Events/EventController.php
class EventController (line 13) | class EventController extends Controller
method index (line 20) | public function index(Campaign $campaign, Event $event)
FILE: app/Http/Controllers/Facebook/DeletionController.php
class DeletionController (line 12) | class DeletionController extends Controller
method handle (line 14) | public function handle(Request $request)
method status (line 46) | public function status(Request $request)
method generate (line 53) | public function generate(Request $request)
method parseSignedRequest (line 72) | private function parseSignedRequest($signedRequest, $secret)
method base64UrlDecode (line 88) | private function base64UrlDecode($input)
FILE: app/Http/Controllers/Families/FamilyController.php
class FamilyController (line 13) | class FamilyController extends Controller
method index (line 20) | public function index(Campaign $campaign, Family $family)
FILE: app/Http/Controllers/Families/MemberController.php
class MemberController (line 16) | class MemberController extends Controller
method index (line 23) | public function index(Campaign $campaign, Family $family)
method create (line 56) | public function create(Campaign $campaign, Family $family)
method store (line 66) | public function store(StoreCharacterFamily $request, Campaign $campaig...
FILE: app/Http/Controllers/Families/TreeController.php
class TreeController (line 11) | class TreeController extends Controller
method index (line 16) | public function index(Campaign $campaign, Family $family)
FILE: app/Http/Controllers/Families/Trees/ApiController.php
class ApiController (line 15) | class ApiController extends Controller
method __construct (line 22) | public function __construct(FamilyTreeService $service)
method index (line 30) | public function index(Campaign $campaign, Family $family): JsonResponse
method entity (line 49) | public function entity(Campaign $campaign, Entity $entity): JsonResponse
method save (line 66) | public function save(Request $request, Campaign $campaign, Family $fam...
FILE: app/Http/Controllers/Filters/FormController.php
class FormController (line 19) | class FormController extends Controller
method __construct (line 24) | public function __construct(protected FilterService $filterService)
method index (line 29) | public function index(Request $request, Campaign $campaign, EntityType...
method connection (line 67) | public function connection(Campaign $campaign)
method render (line 82) | protected function render(mixed $model, string $plural, string $route,...
FILE: app/Http/Controllers/Filters/SaveController.php
class SaveController (line 13) | class SaveController extends Controller
method __construct (line 15) | public function __construct(
method render (line 23) | protected function render(Campaign $campaign, EntityType $entityType)
method save (line 35) | public function save(Campaign $campaign, EntityType $entityType)
FILE: app/Http/Controllers/Front/HelperController.php
class HelperController (line 9) | class HelperController
method apiFilters (line 11) | public function apiFilters()
FILE: app/Http/Controllers/FrontendPrepareController.php
class FrontendPrepareController (line 5) | class FrontendPrepareController extends Controller
method index (line 7) | public function index()
FILE: app/Http/Controllers/Gallery/BrowseController.php
class BrowseController (line 10) | class BrowseController extends Controller
method __construct (line 14) | public function __construct(BrowseService $browseService)
method index (line 19) | public function index(Request $request, Campaign $campaign)
FILE: app/Http/Controllers/Gallery/CreateController.php
class CreateController (line 10) | class CreateController extends Controller
method __construct (line 14) | public function __construct(CreateService $service)
method index (line 20) | public function index(Campaign $campaign, CreateFolder $request)
FILE: app/Http/Controllers/Gallery/DeleteController.php
class DeleteController (line 12) | class DeleteController extends Controller
method __construct (line 18) | public function __construct(DeleteService $service, StorageService $st...
method destroy (line 25) | public function destroy(Campaign $campaign, DeleteImages $request)
method file (line 41) | public function file(Campaign $campaign, Image $image)
FILE: app/Http/Controllers/Gallery/ImageController.php
class ImageController (line 10) | class ImageController extends Controller
method __construct (line 14) | public function __construct(SetupService $service)
method show (line 20) | public function show(Campaign $campaign, Image $image)
FILE: app/Http/Controllers/Gallery/SearchController.php
class SearchController (line 10) | class SearchController extends Controller
method __construct (line 14) | public function __construct(SetupService $service)
method index (line 20) | public function index(Request $request, Campaign $campaign)
FILE: app/Http/Controllers/Gallery/SetupController.php
class SetupController (line 9) | class SetupController extends Controller
method __construct (line 13) | public function __construct(SetupService $service)
method index (line 19) | public function index(Campaign $campaign)
FILE: app/Http/Controllers/Gallery/ShowController.php
class ShowController (line 10) | class ShowController extends Controller
method __construct (line 12) | public function __construct()
method show (line 17) | public function show(Campaign $campaign, Image $image)
FILE: app/Http/Controllers/Gallery/TiptapController.php
class TiptapController (line 11) | class TiptapController extends Controller
method __construct (line 13) | public function __construct(protected TiptapService $service) {}
method index (line 15) | public function index(Request $request, Campaign $campaign)
FILE: app/Http/Controllers/Gallery/UpdateController.php
class UpdateController (line 14) | class UpdateController extends Controller
method __construct (line 18) | public function __construct(UpdateService $service)
method bulk (line 24) | public function bulk(UpdateFiles $request, Campaign $campaign)
method process (line 36) | public function process(UpdateFile $request, Campaign $campaign, Image...
method focus (line 47) | public function focus(UpdateFocus $request, Campaign $campaign, Image ...
FILE: app/Http/Controllers/Gallery/UploadController.php
class UploadController (line 15) | class UploadController extends Controller
method __construct (line 21) | public function __construct(UploadService $uploadService, StorageServi...
method file (line 27) | public function file(UploadFile $request, Campaign $campaign)
method files (line 46) | public function files(UploadFiles $request, Campaign $campaign)
method url (line 70) | public function url(UploadUrl $request, Campaign $campaign)
FILE: app/Http/Controllers/Gallery/VisibilityController.php
class VisibilityController (line 10) | class VisibilityController extends Controller
method index (line 12) | public function index(Campaign $campaign, Image $image)
method save (line 21) | public function save(EditPostVisibility $request, Campaign $campaign, ...
FILE: app/Http/Controllers/GalleryController.php
class GalleryController (line 8) | class GalleryController extends Controller
method __construct (line 10) | public function __construct()
method index (line 15) | public function index(Campaign $campaign)
FILE: app/Http/Controllers/HealthController.php
class HealthController (line 8) | class HealthController extends Controller
method index (line 10) | public function index()
FILE: app/Http/Controllers/HistoryController.php
class HistoryController (line 11) | class HistoryController extends Controller
method __construct (line 13) | public function __construct()
method index (line 18) | public function index(HistoryRequest $request, Campaign $campaign)
FILE: app/Http/Controllers/HomeController.php
class HomeController (line 8) | class HomeController extends Controller
method index (line 10) | public function index()
method back (line 23) | protected function back()
FILE: app/Http/Controllers/InvitationController.php
class InvitationController (line 12) | class InvitationController extends Controller
method __construct (line 23) | public function __construct(InviteService $inviteService, CampaignServ...
method join (line 33) | public function join($token)
FILE: app/Http/Controllers/Items/EntityController.php
class EntityController (line 15) | class EntityController extends Controller
method index (line 22) | public function index(Campaign $campaign, Item $item)
FILE: app/Http/Controllers/Items/ItemController.php
class ItemController (line 13) | class ItemController extends Controller
method index (line 20) | public function index(Campaign $campaign, Item $item)
FILE: app/Http/Controllers/Journals/JournalController.php
class JournalController (line 13) | class JournalController extends Controller
method index (line 20) | public function index(Campaign $campaign, Journal $journal)
FILE: app/Http/Controllers/Layout/NavigationController.php
class NavigationController (line 8) | class NavigationController extends Controller
method __construct (line 10) | public function __construct(protected NavigationService $navigationSer...
method index (line 15) | public function index()
FILE: app/Http/Controllers/Locations/CharacterController.php
class CharacterController (line 15) | class CharacterController extends Controller
method index (line 22) | public function index(Campaign $campaign, Location $location)
FILE: app/Http/Controllers/Locations/EventController.php
class EventController (line 15) | class EventController extends Controller
method index (line 22) | public function index(Campaign $campaign, Location $location)
FILE: app/Http/Controllers/Locations/LocationController.php
class LocationController (line 13) | class LocationController extends Controller
method index (line 20) | public function index(Campaign $campaign, Location $location)
FILE: app/Http/Controllers/Locations/QuestController.php
class QuestController (line 15) | class QuestController extends Controller
method index (line 22) | public function index(Campaign $campaign, Location $location)
FILE: app/Http/Controllers/Maps/Bulks/GroupController.php
class GroupController (line 13) | class GroupController extends Controller
method index (line 18) | public function index(Request $request, Campaign $campaign, Map $map)
FILE: app/Http/Controllers/Maps/Bulks/LayerController.php
class LayerController (line 13) | class LayerController extends Controller
method index (line 18) | public function index(Request $request, Campaign $campaign, Map $map)
FILE: app/Http/Controllers/Maps/Bulks/MarkerController.php
class MarkerController (line 13) | class MarkerController extends Controller
method index (line 18) | public function index(Request $request, Campaign $campaign, Map $map)
FILE: app/Http/Controllers/Maps/ExploreController.php
class ExploreController (line 15) | class ExploreController extends Controller
method __construct (line 20) | public function __construct()
method index (line 28) | public function index(Campaign $campaign, Map $map)
method ticker (line 68) | public function ticker(Campaign $campaign, Map $map)
method chunks (line 93) | public function chunks(Campaign $campaign, Map $map)
FILE: app/Http/Controllers/Maps/GroupController.php
class GroupController (line 17) | class GroupController extends Controller
method index (line 26) | public function index(Campaign $campaign, Map $map)
method show (line 65) | public function show(Campaign $campaign, Map $map)
method create (line 70) | public function create(Campaign $campaign, Map $map)
method store (line 87) | public function store(Campaign $campaign, Map $map, StoreMapGroup $req...
method edit (line 129) | public function edit(Campaign $campaign, Map $map, MapGroup $mapGroup)
method update (line 140) | public function update(StoreMapGroup $request, Campaign $campaign, Map...
method destroy (line 170) | public function destroy(Campaign $campaign, Map $map, MapGroup $mapGroup)
FILE: app/Http/Controllers/Maps/LayerController.php
class LayerController (line 21) | class LayerController extends Controller
method index (line 27) | public function index(Campaign $campaign, Map $map)
method show (line 65) | public function show(Campaign $campaign, Map $map)
method create (line 76) | public function create(Campaign $campaign, Map $map)
method store (line 96) | public function store(Campaign $campaign, Map $map, StoreMapLayer $req...
method edit (line 144) | public function edit(Campaign $campaign, Map $map, MapLayer $mapLayer)
method update (line 168) | public function update(StoreMapLayer $request, Campaign $campaign, Map...
method destroy (line 201) | public function destroy(Campaign $campaign, Map $map, MapLayer $mapLayer)
FILE: app/Http/Controllers/Maps/Layers/MigrateController.php
class MigrateController (line 13) | class MigrateController extends Controller
method __construct (line 19) | public function __construct(MigrateLayerService $migrateLayerService)
method index (line 24) | public function index(Campaign $campaign, Map $map, MapLayer $mapLayer)
FILE: app/Http/Controllers/Maps/MapController.php
class MapController (line 13) | class MapController extends Controller
method index (line 20) | public function index(Campaign $campaign, Map $map)
FILE: app/Http/Controllers/Maps/MarkerController.php
class MarkerController (line 24) | class MarkerController extends Controller
method index (line 47) | public function index(Campaign $campaign, Map $map)
method show (line 69) | public function show(Campaign $campaign, Map $map)
method create (line 80) | public function create(Request $request, Campaign $campaign, Map $map)
method store (line 104) | public function store(Campaign $campaign, Map $map, StoreMapMarker $re...
method edit (line 141) | public function edit(Campaign $campaign, Map $map, MapMarker $mapMarke...
method update (line 162) | public function update(StoreMapMarker $request, Campaign $campaign, Ma...
method destroy (line 203) | public function destroy(Campaign $campaign, Map $map, MapMarker $mapMa...
FILE: app/Http/Controllers/Maps/Markers/DetailController.php
class DetailController (line 12) | class DetailController extends Controller
method index (line 17) | public function index(Campaign $campaign, Map $map, MapMarker $mapMarker)
FILE: app/Http/Controllers/Maps/Markers/MoveController.php
class MoveController (line 11) | class MoveController extends Controller
method index (line 13) | public function index(Request $request, Campaign $campaign, Map $map, ...
FILE: app/Http/Controllers/Maps/PreviewController.php
class PreviewController (line 11) | class PreviewController extends Controller
method index (line 16) | public function index(Campaign $campaign, Map $map)
FILE: app/Http/Controllers/Maps/Reorders/GroupController.php
class GroupController (line 11) | class GroupController extends Controller
method index (line 13) | public function index(ReorderGroups $request, Campaign $campaign, Map ...
FILE: app/Http/Controllers/Maps/Reorders/LayerController.php
class LayerController (line 11) | class LayerController extends Controller
method index (line 16) | public function index(ReorderLayers $request, Campaign $campaign, Map ...
FILE: app/Http/Controllers/Notes/NoteController.php
class NoteController (line 13) | class NoteController extends Controller
method index (line 20) | public function index(Campaign $campaign, Note $note)
FILE: app/Http/Controllers/NotificationController.php
class NotificationController (line 10) | class NotificationController extends Controller
method __construct (line 19) | public function __construct(NavigationService $navigationService)
method index (line 28) | public function index()
method read (line 41) | public function read($id)
method refresh (line 53) | public function refresh()
method clearAll (line 63) | public function clearAll()
FILE: app/Http/Controllers/Onboarding/InitialController.php
class InitialController (line 11) | class InitialController extends Controller
method __construct (line 13) | public function __construct(protected InitialService $initialService) {}
method save (line 15) | public function save(InitialRequest $request, Campaign $campaign)
method skip (line 31) | public function skip(Request $request, Campaign $campaign)
FILE: app/Http/Controllers/Organisation/MemberController.php
class MemberController (line 18) | class MemberController extends Controller
method index (line 27) | public function index(Campaign $campaign, Organisation $organisation)
method create (line 73) | public function create(Campaign $campaign, Organisation $organisation)
method store (line 86) | public function store(StoreOrganisationMembers $request, Campaign $cam...
method show (line 105) | public function show(Campaign $campaign, Organisation $organisation, O...
method edit (line 119) | public function edit(Campaign $campaign, Organisation $organisation, O...
method update (line 133) | public function update(
method destroy (line 153) | public function destroy(Campaign $campaign, Organisation $organisation...
FILE: app/Http/Controllers/Organisation/OrganisationController.php
class OrganisationController (line 13) | class OrganisationController extends Controller
method organisations (line 20) | public function organisations(Campaign $campaign, Organisation $organi...
FILE: app/Http/Controllers/Passport/ClientController.php
class ClientController (line 13) | class ClientController extends Controller
method __construct (line 18) | public function __construct(
method store (line 27) | public function store(Request $request): JsonResponse
FILE: app/Http/Controllers/PasswordSecurityController.php
class PasswordSecurityController (line 10) | class PasswordSecurityController extends Controller
method __construct (line 17) | public function __construct()
method generate2faSecretCode (line 25) | public function generate2faSecretCode(Request $request)
method cancel2FA (line 45) | public function cancel2FA(Request $request)
FILE: app/Http/Controllers/PayPalController.php
class PayPalController (line 14) | class PayPalController extends Controller
method __construct (line 18) | public function __construct(PayPalService $service)
method processTransaction (line 27) | public function processTransaction(ValidatePledge $request, Tier $tier)
method successTransaction (line 70) | public function successTransaction(Request $request)
method cancelTransaction (line 116) | public function cancelTransaction(Request $request)
FILE: app/Http/Controllers/PresetController.php
class PresetController (line 11) | class PresetController extends Controller
method __construct (line 13) | public function __construct()
method index (line 18) | public function index(Campaign $campaign, PresetType $presetType)
method show (line 29) | public function show(Campaign $campaign, PresetType $presetType, Prese...
method create (line 35) | public function create(Campaign $campaign, PresetType $presetType)
method store (line 47) | public function store(StorePreset $request, Campaign $campaign, Preset...
method edit (line 71) | public function edit(Campaign $campaign, PresetType $presetType, Prese...
method update (line 84) | public function update(StorePreset $request, Campaign $campaign, Prese...
method destroy (line 105) | public function destroy(Request $request, Campaign $campaign, PresetTy...
method parseFrom (line 124) | protected function parseFrom(Request $request)
FILE: app/Http/Controllers/Quests/ElementController.php
class ElementController (line 15) | class ElementController extends Controller
method index (line 20) | public function index(Campaign $campaign, Quest $quest)
method create (line 48) | public function create(Campaign $campaign, Quest $quest)
method store (line 58) | public function store(StoreQuestElement $request, Campaign $campaign, ...
method show (line 95) | public function show(Campaign $campaign, Quest $quest, QuestElement $q...
method edit (line 100) | public function edit(Campaign $campaign, Quest $quest, QuestElement $q...
method update (line 125) | public function update(StoreQuestElement $request, Campaign $campaign,...
method destroy (line 165) | public function destroy(Campaign $campaign, Quest $quest, QuestElement...
FILE: app/Http/Controllers/Quests/QuestController.php
class QuestController (line 13) | class QuestController extends Controller
method index (line 20) | public function index(Campaign $campaign, Quest $quest)
FILE: app/Http/Controllers/Races/MemberController.php
class MemberController (line 16) | class MemberController extends Controller
method index (line 23) | public function index(Campaign $campaign, Race $race)
method create (line 52) | public function create(Campaign $campaign, Race $race)
method store (line 65) | public function store(StoreCharacterRace $request, Campaign $campaign,...
FILE: app/Http/Controllers/Races/RaceController.php
class RaceController (line 13) | class RaceController extends Controller
method index (line 20) | public function index(Campaign $campaign, Race $race)
FILE: app/Http/Controllers/ReferralController.php
class ReferralController (line 8) | class ReferralController extends Controller
method __construct (line 10) | public function __construct(protected JoinService $service) {}
method index (line 12) | public function index(Referral $referral)
FILE: app/Http/Controllers/RelationController.php
class RelationController (line 23) | class RelationController extends CrudController
method __construct (line 53) | public function __construct(FilterService $filterService, DatagridRend...
method titleKey (line 61) | public function titleKey(): string
method create (line 71) | public function create(Campaign $campaign)
method store (line 90) | public function store(StoreRelation $request, Campaign $campaign)
method show (line 171) | public function show(Campaign $campaign, Relation $relation)
method edit (line 182) | public function edit(Campaign $campaign, Relation $relation)
method update (line 203) | public function update(StoreRelation $request, Campaign $campaign, Rel...
method destroy (line 224) | public function destroy(Campaign $campaign, Relation $relation)
FILE: app/Http/Controllers/ReminderUpdateController.php
class ReminderUpdateController (line 19) | class ReminderUpdateController extends Controller
method __construct (line 36) | public function __construct(CalendarService $calendarService)
method edit (line 42) | public function edit(Campaign $campaign, Reminder $reminder)
method update (line 73) | public function update(UpdateCalendarEvent $request, Campaign $campaig...
method destroy (line 120) | public function destroy(Campaign $campaign, Reminder $reminder)
method checkPermissions (line 147) | private function checkPermissions(Reminder $reminder)
FILE: app/Http/Controllers/Roadmap/FeatureController.php
class FeatureController (line 11) | class FeatureController extends Controller
method show (line 13) | public function show(Feature $feature)
method store (line 19) | public function store(StoreFeature $request)
method upvote (line 24) | public function upvote(Request $request, Feature $feature)
FILE: app/Http/Controllers/Roadmap/RoadmapController.php
class RoadmapController (line 7) | class RoadmapController extends Controller
method index (line 9) | public function index()
FILE: app/Http/Controllers/Search/AttributeController.php
class AttributeController (line 11) | class AttributeController extends Controller
method __construct (line 13) | public function __construct(protected AttributeSearchService $searchSe...
method index (line 18) | public function index(Request $request, Campaign $campaign, Entity $en...
FILE: app/Http/Controllers/Search/CalendarController.php
class CalendarController (line 10) | class CalendarController extends Controller
method __construct (line 15) | public function __construct(protected SearchService $searchService) {}
method index (line 17) | public function index(Request $request, Campaign $campaign)
method months (line 33) | public function months(Request $request, Campaign $campaign)
FILE: app/Http/Controllers/Search/CampaignController.php
class CampaignController (line 10) | class CampaignController extends Controller
method __construct (line 12) | public function __construct(protected CampaignSearchService $searchSer...
method members (line 14) | public function members(Request $request, Campaign $campaign)
method roles (line 27) | public function roles(Request $request, Campaign $campaign)
FILE: app/Http/Controllers/Search/FullTextController.php
class FullTextController (line 11) | class FullTextController extends Controller
method __construct (line 13) | public function __construct(protected EntitySearchService $service) {}
method index (line 15) | public function index(Campaign $campaign, Request $request)
FILE: app/Http/Controllers/Search/GameSystemSearchController.php
class GameSystemSearchController (line 12) | class GameSystemSearchController extends Controller
method index (line 17) | public function index(): JsonResponse
FILE: app/Http/Cont
Copy disabled (too large)
Download .json
Condensed preview — 6286 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (31,490K chars).
[
{
"path": ".claude/commands/translate.md",
"chars": 1307,
"preview": "# Translate Missing Strings\n\nTranslate missing translations for the given locale.\n\nUsage: /translate [locale_code] [loca"
},
{
"path": ".claude/skills/livewire-development/SKILL.md",
"chars": 4008,
"preview": "---\nname: livewire-development\ndescription: >-\n Develops reactive Livewire 3 components. Activates when creating, updat"
},
{
"path": ".claude/skills/pest-testing/SKILL.md",
"chars": 3148,
"preview": "---\nname: pest-testing\ndescription: >-\n Tests applications using the Pest 3 PHP framework. Activates when writing tests"
},
{
"path": ".claude/skills/tailwindcss-development/SKILL.md",
"chars": 3879,
"preview": "---\nname: tailwindcss-development\ndescription: >-\n Styles applications using Tailwind CSS v4 utilities. Activates when "
},
{
"path": ".dockerignore",
"chars": 33,
"preview": "vendor\nbootstrap/cache/*\n**/*.log"
},
{
"path": ".editorconfig",
"chars": 382,
"preview": "; This file is for unifying the coding style for different editors and IDEs.\n; More information at http://editorconfig.o"
},
{
"path": ".gitattributes",
"chars": 152,
"preview": "* text=auto\n\n*.blade.php diff=html\n*.css diff=css\n*.html diff=html\n*.md diff=markdown\n*.php diff=php\n\n/.github export-ig"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 168,
"preview": "Please report bugs in Discord [](https://discord.gg/rhs"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 123,
"preview": "Please send feature requests to the [Roadmap](https://app.kanka.io/roadmap). This github isn't used for feature requests"
},
{
"path": ".github/workflows/claude.yml",
"chars": 1886,
"preview": "name: Claude Code\n\non:\n issue_comment:\n types: [created]\n pull_request_review_comment:\n types: [created]\n issue"
},
{
"path": ".github/workflows/lint.yml",
"chars": 1288,
"preview": "name: Fix Code Style & Duplication Check\n\non:\n pull_request:\n branches:\n - main\n - develop\n paths:\n "
},
{
"path": ".github/workflows/phpstan.yml",
"chars": 1608,
"preview": "name: \"Tests\"\n\n# Controls when the workflow will run\non:\n # Triggers the workflow on push or pull request events but on"
},
{
"path": ".gitignore",
"chars": 484,
"preview": "/node_modules\n/public/hot\n/public/build/js/tinymce\n/public/storage\n/public/.htaccess\n/public/exports\n/public/info.php\n/p"
},
{
"path": ".jshintrc",
"chars": 277,
"preview": "{\n \"undef\": true,\n \"esversion\": 11,\n \"unused\": true,\n \"browser\": true,\n \"node\": true,\n \"globals\": {\n "
},
{
"path": ".mariadb/10-create-logs-database.sh",
"chars": 190,
"preview": "#!/usr/bin/env bash\n\nmysql --user=root --password=\"$MYSQL_ROOT_PASSWORD\" <<-EOSQL\n CREATE DATABASE IF NOT EXISTS logs"
},
{
"path": ".mariadb/conf.d/kanka.cnf",
"chars": 140,
"preview": "[mysqld]\nmax_allowed_packet=4G\nnet_read_timeout=600\nnet_write_timeout=600\nwait_timeout=28800\ninteractive_timeout=28800\nc"
},
{
"path": ".mcp.json",
"chars": 199,
"preview": "{\n \"mcpServers\": {\n \"laravel-boost\": {\n \"command\": \"vendor/bin/sail\",\n \"args\": [\n "
},
{
"path": ".nginx/thumbor.conf",
"chars": 1027,
"preview": "\n\nupstream thumbor {\n server thumbor:8888;\n}\n\nserver {\n listen 80 default;\n server_name localhost;"
},
{
"path": ".phpactor.json",
"chars": 126,
"preview": "{\n \"$schema\": \"/phpactor.schema.json\",\n \"language_server_phpstan.enabled\": true,\n \"php_code_sniffer.enabled\": t"
},
{
"path": "CLAUDE.md",
"chars": 13184,
"preview": "===\n\n<laravel-boost-guidelines>\n=== foundation rules ===\n\n# Laravel Boost Guidelines\n\nThe Laravel Boost guidelines are s"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 3346,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
},
{
"path": "LICENSE",
"chars": 895,
"preview": "“Commons Clause” License Condition v1.0\n\nThe Software is provided to you by the Licensor under the License, as defined b"
},
{
"path": "README.md",
"chars": 1404,
"preview": "# Kanka\n# [](https://kanka.io/en-US)\n\n[
About this extraction
This page contains the full source code of the owlchester/kanka GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 6286 files (28.5 MB), approximately 7.8M tokens, and a symbol index with 25518 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.