Skip to content

Latest commit

 

History

History
924 lines (816 loc) · 69.3 KB

CHANGELOG.md

File metadata and controls

924 lines (816 loc) · 69.3 KB

Changelog

Fixed

  • Post mentions can be used to read any post on the forum without access control (ab1c868b978e8b0d09a5d682c54665dae17d0985).
  • Notifications can leak restricted content (d0a2b95dca57d3dae9a0d77b610b1cb1d0b1766a).
  • Any user including unactivated can reply in public discussions whose first post was permanently deleted (12f14112a0ecd1484d97330b82beb2a145919015).
  • (subscriptions) Post notifications not getting access checked (https://github.com/flarum/framework/commit/e5f05166a062a9a6eb7c12e28728bfd5db7270e3).

Fixed

Fixed

  • JS dependencies update breaks utilities.

Fixed

  • (approval) posts approved for deleted users error (b5874a0)
  • (regression) bad import (5f2d7fb)
  • akismet fails when the extension is not on a version (45d9121)
  • apply flex for AppearancePage colors input [#3651]
  • groupmentions have poor contrast on some backgrounds [#3672]
  • larastan v1 incompatible with phpstan v1.9.0 [#3665]
  • package manager failures not showing alerts [#3647]
  • password reset leaks user existence [#3616]
  • statistics previous period chart is unclear [#3654]

Changed

  • (package-manager) config composer to use web php version (fd19645)
  • (package-manager) set min core version and add warning (31c3cfc)
  • (statistics) prepare v1.5.1 (dc215ab)
  • Apply fixes from StyleCI (267f675)
  • Fix tag discussion count decreased by 2 when hiding before deleting [#3660]
  • Log migration path when up/down keys are missing [#3664]
  • Make it possible to extend SetupScript [#3643]
  • Setup PHPStan Level 5 [#3553]
  • yarn format (c5c312d)
  • add missing last period to custom date ranges [#3661]
  • add priorities to profile settings page [#3657]
  • allow specifying php extensions in workflow (b0b47a0)
  • format js (06963df)
  • group mentions [#3658]
  • remove styleci from changelog (b2fa28e)
  • set flarum version to dev for 1.6.0 (fc743ba)
  • throw an exception when no serializer is provided to the controller [#3614]

Added

  • (statistics) support for custom date ranges [#3622]
  • Allow additional login params, Introduce LogInValidator [#3670]
  • Allow additional reset password params, introduce ForgotPasswordValidator [#3671]
  • add statistics chart export button [#3662]
  • allow specifying extensions when installing an instance [#3655]
  • contrast util with yiq calculator [#3652]
  • customizable session driver [#3610]
  • replace ColorPreviewInput for GroupModal color input [#3650]
  • send notifications of a new reply when post is approved [#3656]

Fixed

  • (a11y) add accessible labels to notification grid options [#3520]
  • (a11y) present post streams as feeds [#3522]
  • (a11y) set aria-busy when editing a post stream item [#3521]
  • (compilation) versioner not inject into compilers [#3589]
  • (mentions) accessing id of null user relation [#3618]
  • (subscriptions) add missing table prefix for filter gambit [#3599]
  • (tags) use default index sortmap [#3615]
  • Move guzzle requirement to core [#3544]
  • MyISAM tables for extensions during installation (75aaef7, f926c58)
  • Set the translator locale to user preference for email notifications [#3525]
  • $events property declared dynamically [#3598]
  • core settings header has no priority (33bf228)
  • html entities shown raw in page title [#3542]
  • incorrect centring of deleted user avatars in notification list [#3569]
  • intellisense imports defaulting to absolute path from src folder [#3549]
  • minor backward compatible fix for php 8.1 in st_replace (07b2f86)
  • post query wildcard selection causes ambiguity [#3621]
  • potential static caching memory exhaustion [#3548]
  • prepare release workflow has invalid layout (70e483d)
  • remove deprecation warning for decoding null values (590639f)
  • replace .fa() mixin usage with .fas() [#3537]
  • return type hint static is php 8+ (b01b75e)
  • sticky nav content displays below post stream [#3575]
  • titles positioned wrongly with custom header height [#3550]
  • typo in error message (1a189f4)
  • unread notifications are globally cached between users. [#3543]
  • update workflow name (628c281)
  • user has wrong discussion read status [#3591]

Changed

  • (approval, likes) use subscribers [#3577]
  • (package-manager) last tweaks before beta tag (335c602)
  • (statistics) add release notes for 1.4.1 (f4ace73)
  • (statistics) rewrite for performance on very large communities [#3531]
  • (statistics) split timed data into per-model XHR requests [#3601]
  • (tags) Replace event helper with event dispatcher [#3570]
  • Add loading="lazy" attribute for avatars [#3578]
  • Create CODEOWNERS (6e48a03)
  • MyISAM tables for extensions during installation" (f128190)
  • convert AlertManager IndexPage and UserPage components to TS [#3536]
  • convert Badge Checkbox and Navigation components to TS [#3532]
  • convert core modals to TypeScript [#3515]
  • convert page components to TypeScript [#3538]
  • debug line slipped in while rebasing a PR [#3580]
  • don't pass password field between auth modals [#3626]
  • fix github issue templates (d3e456a)
  • format code (4954621)
  • getting the release workflow in (5530400)
  • link logo at the top with the official website [#3552]
  • prevent running both push and pull_request actions at the same time [#3597]
  • refactor prefix matrix and add MySQL 8.0 & PHP 7.3 to workflows [#3595]
  • relying on a third-party for avatar URL tests is unreliable [#3586]
  • require guzzle 6 or 7 (46b3b7a)
  • split FA imports into separate Less file for easy overriding [#3535]
  • unify JS actions into one (rewritten flarum/action-build) [#3573]
  • update version constant during cycle 22 (d864405)
  • use isCollapsed instead of rangeCount [#3581]
  • use github issue template forms [#3526]

Added

  • (likes) Add likes tab to user profile [#3528]
  • (likes) Option to prevent users liking their own posts [#3534]
  • (modals) support stacking modals, remove bootstrap modals dependency [#3456]
  • (subscriptions) add option to send notifications when not caught up [#3503]
  • Add custom class for email confirmation alert [#3584]
  • Admin debug mode warning [#3590]
  • Delete all notifications [#3529]
  • Queue package manager commands [#3418]
  • Restart the queue worker after cache clearing, ext enable/disable, save settings [#3565]
  • add createTableIfNotExists migration helper [#3576]
  • add new workflow for generating release meta (0901e59)
  • clear password & email tokens when appropriate [#3567]
  • discussion UTF-8 slug driver [#3606]
  • expose assets base url to frontend forum model [#3566]
  • extender to add custom less variables [#3530]
  • publish assets on admin dashboard cache clear [#3564]
  • throttle email change, email confirmation, and password reset endpoints. [#3555]

Added

  • created_at and updated_at columns added to several tables (flarum#3435)
  • Priorities added to AdminNav links (flarum#3453)
  • app.translator allows retrieving and setting locale (flarum#3451)
  • Extensions can now declare custom settings components for use with buildSettingComponent (flarum#3494)
  • Implement extensibility on rel and target attributes on links (flarum#3455)
  • New backend tests were added to some of the bundled extensions (flarum#3508)

Changed

  • Split boot script for Flarum in HTML footer into two parts for CSP hashing (flarum#3461)
  • Split asset compilation by giving assembling compilers its own method (flarum#3446)
  • Increase visibility of Component typescript class for better extensibility (flarum#3437)

Fixed

  • Mentioning an event post breaks the notification dropdown (flarum#3493)
  • Suspension modal shows after suspension is over (flarum#3449)
  • CLI based installations don't exit with an error code on failure (flarum#3452)
  • Tabbing through dropdown controls doesn't make them visible (flarum#3450)
  • Requiring zero tags on new discussions forces the user to select tags (flarum#3448)
  • Long topic titles in the notification list don't overflow (flarum#3500)
  • Subtags of tags the user has access to are visible even if these are not accessible (flarum#3419)
  • assertAdmin tests access based on wrong gate ability (flarum#3501)
  • Increasing the composer header size causes elements to slip underneath (flarum#3502)
  • The profile mentions tab errors when sorting by created_at (flarum#3506)

Changed

  • UserCard now has ItemList for easier extending (flarum#3436)

Fixed

From v1.2.1 on all bundled Flarum extensions and flarum/core are merged into one monorepo. As a result of this, the full code diff linked above looks rather complex and messy compared to the full list of changes made for this release.

Added

Changed

  • Post number calculation is now executed inside the database layer, preventing integrity constraints (flarum#3358)
  • Errors from within extensions no longer make Flarum crash but trigger a visible warning (flarum#3349)
  • Sorting options for discussion index is now extensible (flarum#3377)
  • Event listeners from the framework now are added before those of extensions (flarum#3373)

Fixed

  • Typings and missing typescript components (flarum#3348)
  • Post--by-start-user CSS class is not added to post html (flarum#3356)
  • Timestamps for notifications are incorrect on servers that have a timezone different than UTC (flarum#3379)
  • Extensions with dependencies that are enabled do not cause dependencies to be enforced (flarum#3352)
  • Search using non-words doesn't work (flarum#3385)
  • Slugs are not working for other languages than English (flarum#3387)
  • Deprecations are triggered on PHP 8.1 (flarum#3384)
  • Post permalink for subdirectory installs have duplicate paths segments (flarum#3354)
  • Composer discussion title is not always clearly visible (flarum#3413)
  • Mentions: extensions re-using mentions can cause errors due to missing context (flarum#3382)
  • Tags: tag selection modal errors on new discussions when pressing down (flarum#3403)
  • [A11Y] Tags: focus to input and layout of tag selection modal are off (flarum#3412)
  • Subscriptions: searching inside the following page will search in all discussions (flarum#3376)

Fixed

  • Don't escape single quotes in discussion title meta tags (60600f4d2b8f0c5dac94c329041427a0a08fad42)

Added

  • View README documentation in extension pages (flarum#3094).
  • Declare & Use CSS Custom Properties (flarum#3146).
  • Lazy draw dropdowns to improve performance (flarum#2925).
  • Default Settings Extender (flarum#3127).
  • Add textarea setting type to admin pages (flarum#3141).
  • Allow registering settings as Less config vars through Settings Extender (flarum#3011).
  • Allow replacing of blade template namespaces via extender (flarum#3167).
  • Update to Webpack 5 (flarum#3135).
  • Introduce Less custom function extender with a is-extension-enabled function (flarum#3190).
  • Support for few in ICU Message syntax (flarum#3122).
  • ES6 local support for number formatting (flarum#3099).
  • Added dedicated endpoint for retrieving single groups (flarum#3084).
  • Callback loadWhere relation eager loading extender (flarum#3116).
  • Extensible document title driver implementation (flarum#3109).
  • Type checks, typescript coverage GH action (flarum#3136).
  • Add color indicator in appearance admin page instead of validating colors (flarum#3140).
  • Add typing files for our translator libraries (flarum#3175).
  • StatusWidget tools extensibility (flarum#3189).
  • Allow switching the ImageManager driver (flarum#3195).
  • Events for notification read/all read actions (flarum#3203).

Changed

  • Testing with php8.1 (flarum#3102).
  • Migrate fully to Yarn (flarum#3155).
  • Handle post rendering errors to avoid crashes (flarum#3061).
  • Added basic filtering, sorting, and pagination to groups endpoint (flarum#3084).
  • Pass IP address to API Client pipeline (flarum#3124).
  • Rename Extension Page "Uninstall" to "Purge" (flarum#3123).
  • [A11Y] Improve accessibility for discussion reply count on post stream (flarum#3090).
  • Improved post loading support (flarum#3100).
  • Rewrite SubtreeRetainer into Typescript (flarum#3137).
  • Rewrite ModalManager and state to Typescript (flarum#3007).
  • Rewrite frontend application files to Typescript (flarum#3006).
  • Allow extensions to modify the minimum search length in the Search component (flarum#3130).
  • Allow use of any tag in listItems helper (flarum#3147).
  • Replace for ... in with Array.reduce (flarum#3149).
  • Page title format is now implemented through translations (flarum#3077, flarum#3228)
  • Add aria-label attribute to the navigation drawer button (flarum#3157).
  • Convert extend util to TypeScript (flarum#2928).
  • Better typings for DiscussionListState (flarum#3132).
  • Rewrite ItemList, update ItemList typings (flarum#3005).
  • Add priority order to discussion page controls (flarum#3165).
  • Use @php in Blade templates (flarum#3172).
  • Convert some common classes/utils to TS (flarum#2929).
  • Convert routes to Typescript (flarum#3177).
  • Move admin colorItems to an ItemList (flarum#3186).
  • Centralize pagination/canonical meta URL generation in Document (flarum#3077).
  • Use revision versioner to allow custom asset versioning (flarum#3183).
  • Split up application error handling (flarum#3184).
  • Make SlugManager available to blade template (flarum#3194).
  • Convert models to TS (flarum#3174).
  • Allow loading relations in other discussion endpoints (flarum#3191).
  • Improve selected text stylization (flarum#2961).
  • Extract notification primaryControl items to an ItemList (flarum#3204).
  • Frontend code housekeeping (#3214, #3213).
  • Only retain scroll position if coming from discussion (flarum#3229).
  • Use aria-live regions to focus screenreader attention on alerts as they appear (flarum#3237).
  • Prevent unwarranted a11y warnings on custom Button subclasses (flarum#3238).

Fixed

  • Missing locale text in the user editing modal (flarum#3093).
  • Dashes in table prefix prevent installation (flarum#3089).
  • Missing autocomplete attributes to input fields (flarum#3088).
  • Missing route parameters throwing an error (flarum#3118).
  • Mail settings select component never used (flarum#3120).
  • White avatar image throws javascript errors on the profile page (flarum#3119).
  • Unformatted avatar upload validation errors (flarum#2946).
  • Webkit input clear button shows up with the custom one (flarum#3128).
  • Media query breakpoints conflict with Windows display scaling (flarum#3139).
  • typeof this not recognized by some IDEs (flarum#3142).
  • Model.save() cannot save null hasOne relationship (flarum#3131).
  • Edit post until reply policy broken on PHP 8 (flarum#3145).
  • Inaccurate Component.component argument typings (flarum#3148).
  • Scrolling notification list infinitely repeats (flarum#3159).
  • Argument for INFO constant was assigned to maxfiles argument incorrectly (bfd81a83cfd0fa8125395a147ff0c9ce622f38e3).
  • Activated event is sent every time an email is confirmed instead of just once (flarum#3163).
  • [A11Y] Modal close button missing accessible label (flarum#3161).
  • [A11Y] Auth modal inputs missing accessible labels (flarum#3207).
  • [A11Y] Triggering click on drawer button can cause layered backdrops (flarum#3018).
  • [A11Y] Focus can leave open nav drawer on mobile (flarum#3018).
  • [A11Y] Post action items not showing when focus is within the post (flarum#3173).
  • [A11Y] Missing accessible label for alert dismiss button (flarum#3237).
  • Error accessing the forum after saving a setting with more than 65k characters (flarum#3162).
  • Cannot restart queue from within (flarum#3166).
  • Post--by-actor not showing when comparing user instances (flarum#3170).
  • Incorrect typings for Modal hide() method (flarum#3180).
  • Avatar Upload throws errors with correct mimetype and incorrect extension (flarum#3181).
  • Clicking the dropdown button on a post opens all dropdowns in Post-actions (flarum#3185).
  • getPlainContent() causes external content to be fetched (flarum#3193).
  • listItems not accepting all Mithril.Children (flarum#3176).
  • Notifications mark as read option updates all notifications including the read ones (flarum#3202).
  • Post meta permalink not properly generated (flarum#3216).
  • Broken contribution link in README (flarum#3211).
  • WelcomeHero is displayed when content is empty (flarum#3219).
  • last_activity_at, last_seen_at updated on all API requests (flarum#3231).
  • RememberMe access token updated twice in API requests (flarum#3233).
  • Error in funding item in composer.json bricks the frontend (flarum#3239).
  • Escaped quotes in window title (flarum#3264)
  • schedule:list command fails due to missing timezone configuration.

Deprecated

Fixed

  • Performance issue with very large communities.

Added

  • Info command now displays MySQL version, queue driver, mail driver (flarum#2991)
  • Use organization Prettier config (flarum#2967)
  • Support for global typings in extensions (flarum#2992)
  • Typings for class component state attribute (flarum#2995)
  • Custom colorising with CSS custom properties (flarum#3001)
  • Theme Extender to allow overriding LESS files (flarum#3008)
  • Update lastSeenAt when authenticating via API (flarum#3058)
  • NoJs Admin View (flarum#3059)
  • Preload FontAwesome, JS and CSS, and add preload extender (flarum#3057)

Changed

  • Move Day.js plugin types import to global typings (flarum#2954)
  • Avoid resolving excluded middleware on each middleware items
  • Allow extra attrs provided to <Select> to be passed through to the DOM element (flarum#2959)
  • Limit height of code blocks (flarum#3012)
  • Update normalize.css from v3.0.2 to v8.0.1 (flarum#3015)
  • Permission Grid: stick the headers to handle a lot of tags (flarum#2887)
  • Use ItemList for DiscussionPage content (flarum#3004)
  • Move email confirmation to POST request (flarum#3038)
  • Minor CSS code cleanup (flarum#3026)
  • Replace username with display name in more places (flarum#3040)
  • Rewrite Button to Typescript (flarum#2984)
  • Rewrite AdminPage abstract component into Typescript (flarum#2996)
  • Allow adding page parameters to PaginatedListState (flarum#2935)
  • Pass filter params to getApiDocument (flarum#3037)
  • Use author filter instead of gambit to get a user's discussions (flarum#3068)
  • [A11Y] Accessibility improvements for the Search component (flarum#3017)
  • Add determinsm to extension order resolution (flarum#3076)
  • Add cache control headers to the admin area (flarum#3097)

Fixed

  • HLJS 11 new styles resulting in double padding (flarum#2909)
  • Internal API client attempting to load an uninstantiated session
  • Empty post footer taking visual space (flarum#2926)
  • Unrecognized component class custom attribute typings (flarum#2962)
  • User edit groups permission not visually depending on view hidden groups permission (flarum#2880)
  • Event post excerpt preview triggers error (flarum#2964)
  • Missing settings defaults for display name driver and User slug driver (flarum#2971)
  • [A11Y] Icons not hidden from screenreaders (flarum#3027)
  • [A11Y] Checkboxes not focusable (flarum#3014)
  • Uploading ICO favicons resulting in server errors (flarum#2949)
  • Missing proper validation for large avatar upload payload (flarum#3042)
  • [A11Y] Missing focus rings in control elements (flarum#3016)
  • Unsanitised integer query parameters (flarum#3064)
Code Contributors

@lhsazevedo, @Ornanovitch, @pierres, @the-turk, @iPurpl3x

Issue Reporters

@uamv, @dannyuk1982, @BurnNoticeSpy, @haarp, @peopleinside, @matteocontrini

Fixed

  • Upgrade to v1.0 resets the "view" permission on all tags (flarum#2941)

Changed

  • Removed [forum] prefix from Request Password and Email Confirmation emails (a4a81c0)
  • Adopt huntr.dev for handling our security vulnerability reports (flarum#2918)
  • Maintenance handler can now be replaced through the service container (ioc) (4acff91)
  • The colors on the auto generated avatars are now based on the Display Name of the user (flarum#2873)

Fixed

  • Avatar in notifications list are incorrectly aligned (flarum#2906)
  • FilesystemManager is not compatible with upstream Laravel implementation (flarum#2936)

Fixed

  • Critical XSS vulnerability

Fixed

  • Installation fails on environments without proc_* functions enabled or mysql client binary (flarum#2890)

Added

  • Task scheduling
  • load() method on ApiController extender to allow eager loading of relations (flarum#2724)
  • Installation supports enabling a set of extensions (flarum#2757)
  • RequestUtil helper class added to abstract the logic of the actor, session, locale and route name from the request (flarum#2449)
  • Code scanning action with GitHub CodeQL (flarum#2744)
  • The Formatter extender now has an unparse method to allow extensions to hook into the unparsing of content (flarum#2780)
  • A Filesystem extender allows direct modification and addition of filesystem disks (flarum#2732)
  • A slug driver based on the User ID was introduced (flarum#2787)
  • An extensible users list was added to the admin area (flarum#2626)
  • Headers hardened by adding Referer Policy, Xss Protection and Content type (flarum#2721)
  • Tooltip component (flarum#2843)
  • Moved insertText and styleSelectedText from markdown to core (flarum#2826)
  • A squashed database schema install dump to speed up new installs (flarum#2842)
  • Pagination in the canonical URL for discussion pages (flarum#2853)
  • PaginatedListState for the DiscussionList and to support paginated lists in the frontend (flarum#2781)
  • Introduce the new webpack config and flarum-tsconfig for typehinting (flarum#2856)

Changed

  • Now tracking bundle sizes to keep an eye on web performance (flarum#2695)
  • Eager load relations on ListPostsController to improve performance (flarum#2717)
  • Replace classList with clsx library (flarum#2760)
  • Replaced the javascript based loading spinner with a pure CSS version (flarum#2764)
  • Route names now have to be unique (flarum#2771)
  • ActorReference is now available from the error handler middleware (flarum#2410)
  • The migrations table now has an Auto Increment ID (flarum#2794)
  • Assets and avatars are now managed using Laravel filesystem disks (flarum#2729)
  • Extracted asset publishing (php flarum assets:publish) from migrating (flarum#2731)
  • Assets were compiled in the format <asset>-<revision>.<js|css>, this is now <asset>.<js|css>?v=<revision> (flarum#2805)
  • The powered by header can now be configured in the config under headers (flarum#2777)
  • Switched to the ICU format for translation files (flarum#2759)
  • Allow extend and override to apply to multiple methods in one call
  • Notifications dropdown and list refactored (flarum#2822)
  • Updated validation locale strings based on Laravel 8 changes (flarum#2829)
  • Caching of permissions is now taken care of centrally, reducing code duplication (flarum#2832)
  • Replaced lodash-es by throttle-debounce to reduce bundle size (flarum#2827)
  • Internal API requests are now executed through middleware (flarum#2783)
  • Permission changes: viewDiscussions to viewForum and viewUserList to searchUsers (flarum#2854)

Fixes

  • Javascript is shown when editing the title of a discussion (flarum#2693)
  • Canonical url logic uses request object which causes wrong URL's when a different page is default (flarum#2674)
  • Dropdown toggle has no aria label (flarum#2668)
  • Nav drawer is focusable when off-screen on small viewports (flarum#2666)
  • Search input has no aria-label and no role (flarum#2669)
  • Code duplication exists between SendConfirmationEmailController and AccountActivationMailer (flarum#2493)
  • When setting tags as homepage default, visiting a tag will show all posts (flarum#2754)
  • Locale cache is cleared twice when cache clearing (flarum#2738)
  • When cache clearing fails an exception can be thrown due to a partial flush (flarum#2756)
  • Database migrations rely on MyISAM even though the eventual migrated database does not use it (flarum#2442)
  • Discussion search result is not sorted by relevance by default (flarum#2773)
  • Extensions cannot register custom searcher classes (flarum#2755)
  • Searching discussion titles is not possible (flarum#2698)
  • Boot errors due to failing extenders throw a generic error (flarum#2740)
  • Required argument to Component.$() isn't really required (flarum#2844)
  • Component does not allows use of all mithril lifecycle functionality (flarum#2847)

Removed

  • The make:migration command has been removed (flarum#2686)
  • Background fade on the header has been removed (flarum#2685)
  • Remove vendor prefixes in less (flarum#2766)
  • The session is no longer available from the User class (flarum#2790)
  • The mail key is removed from the laravel related config (flarum#2796)

Added

Changed

  • Run integration tests in transaction (flarum#2304)
  • Allow policies to return a boolean for simplified allow/deny (flarum#2534)
  • Converted highlight helper to typescript (flarum#2532)
  • Add accessibility attributes to Mark as Read button (flarum#2564)
  • Dismiss errors on change email modal upon a new request (00913d5)
  • Disabled extensions now are marked with a red circle instead of a red dot (flarum#2562)
  • Extension dependency errors now show the extension title instead of the ID (flarum#2563)
  • Change mutate method on ApiSerializer extender to attributes (flarum#2578)
  • Moved locale files to the core from the language pack (flarum#2408)
  • AdminPage extensibility and generic improvements (flarum#2593)
  • Remove entry of authors, link to https://flarum.org/team (flarum#2625)
  • Search and filtering are split (flarum#2454)
  • Move IP identification into a middleware (flarum#2624)
  • Editor Driver abstraction introduced (flarum#2594)
  • Allow overriding routes (flarum#2577)
  • Split user edit permissions into permissions for editing of user credentials, username, groups and suspending (flarum#2620)
  • Reduced number of admin extension categories (flarum#2604)
  • Move search related classes to a dedicated Query namespace (flarum#2645)
  • Rewrite common helpers into typescript (flarum#2541)
  • TextEditor is moved to the common namespace for use in the admin frontend (flarum#2649)
  • Update Laravel/Illuminate components to 8 (flarum#2576)
  • Eager load relations in discussion listing to improve performance (flarum#2639)
  • Adopt flarum/testing package (flarum#2545)
  • Replace user gambit with author gambit (612a57c)
  • Posts page of on user profile loads posts using username instead of id (30017ee)

Fixed

  • Transform css breaks iOS scroll functionality (flarum#2527)
  • Composer header is hidden on mobile devices (flarum#2279)
  • Cannot delete a post or discussion of a deleted user (flarum#2521)
  • DiscussionListPane jumps around not keeping the scroll position (flarum#2402)
  • Infinite scroll on notifications dropdown broken (flarum#2524)
  • The show language selector switch remains toggled on (9347b12)
  • Model Visibility extender throws exception on extensions that aren't installed or enabled (flarum#2580)
  • Extensions are marked as enabled when enabling fails to unmet extension dependencies (flarum#2558)
  • Routes to admin extension pages without a valid ID break the admin page (flarum#2584)
  • Disabled fieldset use an incorrect CSS property disallowed (flarum#2585)
  • Scrolling to a post that is already loaded the Load More button shows and does not trigger (flarum#2388)
  • Opening discussions on some mobile devices require a double tap (flarum#2607)
  • iOS devices show erratic behavior in the post stream while updating (flarum#2548)
  • Small mobile screens partially hides the composer when the keyboard is open (flarum#2631)
  • Clearing cache does not clear the template cache in storage/views (flarum#2648)
  • Boot errors show critical information (flarum#2633)
  • List user endpoint discloses last online even if user choose against it (flarum#2634)
  • Group gambit disclosed hidden groups (flarum#2657)
  • Search results on small windows not fully visible (flarum#2650)
  • Composer goes off screen on Safari when starting to type (flarum#2660)
  • A search that has no results shows the search results dropdown (b88a7cb)
  • The composer modal moves around when typing on Safari (a64c398)

Removed

  • Deprecated CSRF wildcard path match
  • Deprecated policy and visibility scoping events
  • Deprecated post types event
  • Deprecated validation events
  • Deprecated notification events
  • Deprecated floodgate
  • Deprecated user preferences event
  • Deprecated formatting events
  • Deprecated api events
  • Deprecated bootstrap.php support
  • PHP 7.2 support (flarum#2507)
  • Bidi attribute in the rendered HTML (flarum#2602)
  • AccessToken::find, use AccessToken::findValid instead (flarum#2651)

Deprecated

  • GetModelIsPrivate event (flarum#2587)
  • CheckingPassword event (flarum#2176)
  • event() helper (flarum#2608)
  • AccessToken::generate argument $lifetime (flarum#2651)
  • Rememberer::remember argument $token should receive an instance of RememberAccessToken with AccessToken being deprecated (flarum#2651)
  • Rememberer::rememberUser (flarum#2651)
  • SessionAuthenticator::logIn argument $userId, should be replaced with AccessToken (flarum#2651)
  • TextEditor has been moved to common (flarum#2649)
  • UserFilter (91e8b56)

Added

Changed

Fixed

Removed

  • MomentJS alias (flarum#2428).
  • Deprecated user events GetDisplayName and PrepareUserGroups (flarum#2428).
  • AssertPermissionTrait (flarum#2428).
  • Path related helpers and methods in Application (flarum#2428).
  • Backward compatibility layers from the frontend rewrite (flarum#2428).

Deprecated

Fixed

  • SuperTextarea component is not exported.
  • Symfony dependencies do not match those depended on by Laravel (flarum#2407).
  • Scripts from textformatter aren't executed (flarum#2415)
  • Sub path installations have no page title.
  • Losing focus of Composer area when coming from fullscreen.

Added

  • Check dependencies before enabling / disabling extensions (flarum#2188)
  • Set up temporary infrastructure for TypeScript in core (flarum#2206)
  • Better UI for request error modals (flarum#1929)
  • Display name extender, tests, frontend UI (flarum#2174)
  • Scroll to post or show alert when editing a post from another page (flarum#2108)
  • Feature to test email config by sending an email to the current user (flarum#2023)
  • Allow searching users by group ID using the group gambit (flarum#2192)
  • Use liveHumanTimes helper to update times without reload/rerender (flarum#2208)
  • View extender, tests (flarum#2134)
  • User extender to replace PrepareUserGroups (flarum#2110)
  • Increase extensibility of skeleton PHP (flarum#2308, flarum#2318)
  • Pass a translator instance to getEmailSubject in MailableInterface (flarum#2244)
  • Force LF line endings on windows (flarum#2321)
  • Add a Link component for internal and external links (flarum#2315)
  • ConfirmDocumentUnload component
  • Error handler middleware can now be manipulated by the middleware extender

Changed

Fixed

Removed

  • Flarum\Event\AbstractConfigureRoutes event class
  • Flarum\Event\ConfigureApiRoutes event class
  • Flarum\Event\ConfigureForumRoutes event class
  • Flarum\Console\Event\Configuring event class
  • Flarum\Event\ConfigureModelDates event class
  • Flarum\Event\ConfigureLocales event class
  • Flarum\Event\ConfigureModelDefaultAttributes event class
  • Flarum\Event\GetModelRelationship event class
  • Flarum\User\Event\BioChanged event class
  • Flarum\Database\MigrationServiceProvider moved into Flarum\Database\DatabaseServiceProvider
  • Unused admin/components/Widget component (admin/component/DashboardWidget should be used instead)
  • Mandrill mail driver (https://github.com/flarum/framework/commit/bca833d3f1c34d45d95bf905902368a2753b8908)

Deprecated

  • Flarum\User\Event\GetDisplayName event class
  • Global path helpers, Flarum\Foundation\Application path methods (flarum#2155)
  • Flarum\User\AssertPermissionTrait (flarum#2044)

Added

  • Console extender (#2057)
  • CSRF extender (#2095)
  • Event extender (#2097)
  • Mail extender (#2012)
  • Model extender (#2100)
  • Posts by users that started a discussion now have the CSS class .Post--by-start-user
  • PHPUnit 8 compatibility
  • Composer 2 compatibility
  • Permission groups can now be hidden (#2129)
  • Confirmation popup when hiding or deleting posts (#2135)

Changed

  • Updated less.php dependency version to 3.0
  • Updated JS dependencies
  • All notifications and other emails now processed through the queue, if enabled (#978, #1928, #1931, #2096)
  • Simplified uploads, removing need to store intermediate files (#2117)
  • Improved date handling for dates older than 1 year (#2034)
  • Linting and automatic formatting for JS (#2099)
  • Translation files from Language Packs are only loaded for extensions that are enabled (#2020)
  • PHP extenders' properties are now private instead of protected, intentionally making it harder to extend these classes (#1958)
  • Preparation for upgrading Laravel components to 5.8 and then 6.0 (#2055, #2117)
  • Allowed permission checks based on model classes in addition to instances (#1977)

Fixed

  • Users can no longer restore discussions hidden by admins (#2037)
  • Issues of the Modal not showing or auto hiding (#1504, #1813, #2080)
  • Columnar layout on admin extensions page was broken in Firefox (#2029, #2111)
  • Non-dismissible modals could still be dismissed using the ESC key (#1917)
  • New discussions were added to the discussion list above unread sticky posts (#1751, #1868)
  • New discussions not visible to users when using Pusher (#2076, #2077)
  • Permission icons were aligned unevenly in admin permissions list (#2016, #2018)
  • Notification bubble not inversed on mobile with colored header (#1983, #2109)
  • Post stream scrubber clicks jumped back to first post (#1945)
  • Loading state of Switch toggle component was hard to see (#2039, #1491)
  • Flarum\Extend\Middleware: The methods insertBefore() and insertAfter() did not work as described (#2063, #2084)

Removed

  • Support for PHP 7.1 (#2014)
  • Zend compatibility bridge (#2010)
  • SES mail support (#2011)
  • Backward compatibility layer for Flarum\Mail\DriverInterface, new methods from beta.12 are now required
  • Flarum\Util\Str helper class
  • Flarum\Event\ConfigureMiddleware event

Deprecated

  • Flarum\Event\AbstractConfigureRoutes event class
  • Flarum\Event\ConfigureApiRoutes event class
  • Flarum\Event\ConfigureForumRoutes event class
  • Flarum\Event\ConfigureLocales event class

Added

  • Full support for PHP 7.4 (#1980)
  • Mail settings: Configure region for the Mailgun driver (#1834, #1850)
  • Mail settings: Alert admins about incomplete settings (#1763, #1921)
  • New permission that allows users to post without throttling (#1255, #1938)
  • Basic transliteration of discussion "slugs" / pretty URLs (#194, #1975)
  • User profiles: Render basic content on server side (#1901)
  • New extender for configuring middleware (#1919, #1952, #1957, #1971)
  • New extender for configuring error handling (#1781, #1970)
  • Automated tests for PHP extenders to guarantee their backwards compatibility

Changed

  • Profile URLs for non-existing users properly return HTTP 404 (#1846, #1901)
  • Confirmation email subject no longer contains the forum title (#1613)
  • Improved error handling during Flarum's early boot phase (#1607)
  • Updated deprecated "Zend" libraries to their new "Laminas" equivalents (#1963)

Fixed

  • Update page did not work when installed in subdirectories (#1947)
  • Avatar upload did not work in IE11 / Edge (#1125, #1570)
  • Translation fallback was ignored for client-rendered pages (#1774, #1961)
  • The success alert when posting replies was invisible (#1976)

Fixed

  • Saving custom css in admin failed (#1946)

Added

  • Comments have an additional class Post--by-actor when posted by the user (#1927)

Changed

  • Improved support for URL identification during installation (#1861)
  • KeyboardNavigatable now has a callback ability (#1922)
  • Links are no longer opened with target _blank but in the same window (#859)
  • Links now have nofollow ugc by default as their rel attribute (#859, #1884)
  • Improved performance of the full text gambit when searching for users (#1877)
  • The Queue implementation is now available under its Illuminate contract

Fixed

  • No error handling was possible in the console/cli (#1789)
  • Enable scrollbars in log in modals so it fits for GitHub (#1716)
  • Reduce log in modal for SSO so it fits for Facebook (#1727)
  • Deleting discussions permanently did not delete its posts (#1909)
  • Fixed the queue:restart command (#1932)
  • Deleted posts were visible to all visitors (#1827)
  • Old avatars weren't being deleted when replaced (#1918)
  • The search performance regression was reverted (#1764)
  • No profile background could be set for remote images (#445)
  • Back button sends to home even though it could actually go back (#1942)
  • Debug button no longer visible (#1687)
  • Modals on smaller screens use the whole width of the page

Added

  • Initial queue support: Infrastructure for offloading long-running tasks (e.g. email sending) to background workers (#1773)
  • Notifications can now be marked as read without visiting a discussion (#151)
  • SEO: The discussion list now has a rel="canonical" meta tag, preventing duplicate content (#1134, #1814)
  • The "Edit User" permission can now be edited in the UI (#1845)
  • New status message and redirect after user deletion (#1750, #1777)
  • Errors in Flarum's boot process are now presented with more detailed information (#1607)

Changed

  • Better, more detailed and extensible error handling (#1641, #1843)
  • Error pages in debug mode now return the same HTTP status codes as in production (#1648)
  • Tweak HTTP status codes for authentication / authorization errors (#1854)
  • Already-used links from account activation emails now show a better error message (#1337)

Fixed

  • Security vulnerabilities in dependencies
  • Performance: High CPU usage when scrolling in a discussion (#1222)
  • Special characters crashed the search (#1498)
  • Missing declarations for language and text direction in HTML output (#1772)
  • Private messages were counted in user post counts (#1695)
  • Extensions could not change the forum's default page (#1819)
  • API requests authenticated using access tokens needed to provide a CSRF token (#1828)
  • Accessibility: Screenreaders did not read the "Back to discussion list" link (#1835)

Added

  • New hasPermission() helper method for Group objects (9684fbc)
  • Expose supported mail drivers in IoC container (208bad3)
  • More test for some API endpoints (1670590)
  • The Formatter\Rendering event now receives the HTTP request instance as well (0ab9fac)
  • More and better validation in installer UIs
  • Check and enforce minimum MariaDB (7ff9a90)
  • Revert publication of assets when installation fails (ed9591c)
  • Benefit from Laravel's database reconnection logic in long-running tasks (e0becd0)
  • The "vendor path" (where Composer dependencies can be found) can now be configured (5e1680c)

Changed

  • Performance: Actually cache translations on disk (0d16fac)
  • Allow per-site extenders to override extension extenders (ba594de)
  • Do not resolve objects from the IoC container (in service providers and extenders) until they are actually used
  • Replace event subscribers (that resolve objects from the IoC container) with listeners (that resolve lazily)
  • Use custom service provider for Mail component (ac5e26a)
  • Update to Laravel 5.7, revert custom logic for building database index names
  • Refactored installer, extracted Installation class and pipeline for reuse in CLI and web installers (790d5be)
  • Use whitelist for enabling pre-installed extensions during installation (4585f03)
  • Update minimum MySQL version (7ff9a90)

Fixed

  • Signing up via OAuth providers was broken (67f9375)
  • Group badges were overlapping (16eb1fa)
  • API: Endpoint for uninstalling extensions returned an error (c761802)
  • Documentation links in installer were outdated (b58380e)
  • Event posts where counted when aggregating user posts (671fdec)
  • Admins could not reset user passwords (c67fb2d)
  • Several down migrations were invalid
  • Validation errors on reset password page resulted in HTTP 404 (4611abe)
  • is:unread gambit generated an invalid query (e17bb0b)
  • Entire forum was breaking when the custom_less setting was missing from the database (bf2c5a5)
  • Dropdown icon was not showing in user card when on user page (12fdfc9)
  • Requests were missing the original* attributes, which broke installations in subfolders (56fde28)
  • Special characters such as % and _ could return incorrect results (ee3640e)
  • FontAwesome component package changed paths in version 5.9.0 (5eb69e1)
  • Some server environments had problems accessing the system-wide tmp path for storing JS file maps (54660eb)
  • Content length of posts.content was not migrated to mediumText in 2017 (590b311)
  • An error occurred when going to the previous route if there was no previous route found (985b87da)

Removed

  • php flarum install --defaults - this was meant to be used in our old development VM (44c9109)
  • Obsolete id attributes in JSON-API responses (ecc3b5e and 7a44086)

Fixed

  • Fix live output in migrate:reset command (f591585)
  • Fix search with database prefix (7705a2b)
  • Fix invalid join time of admin user created by installer (57f73c9)
  • Ensure InnoDB engine is used for all tables (fb6b51b, 6370f7e)
  • Fix dropping foreign keys in down migrations (57d5846)
  • Fix discussion list scroll position not being maintained when hero is not visible (40dc6ac)
  • Fix empty meta description tag (88e43cc)
  • Remove empty attributes on <html> tag (796b577)