Skip to content

Commit cd9803e

Browse files
committed
Expand feature set and documentation:
- Enhanced integrations with support for ScreenCloud, Spectacle (KDE), macOS Share sheet, Xerahs, and CLI script. - Added two-factor authentication (TOTP) support. - Introduced user and admin activity logs powered by Spatie Activitylog. - Implemented in-app updates for browser-based instance upgrades. - Updated guides and configuration documentation to reflect new features.
1 parent 92603bf commit cd9803e

6 files changed

Lines changed: 95 additions & 7 deletions

File tree

README.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,26 @@ This is the next-generation XBackBone, rebuilt from the ground up on **Laravel 1
1717

1818
## Features
1919

20-
- **ShareX ready** — generate a ready-to-use ShareX uploader config in one click.
20+
- **One-click integrations** — generate ready-to-use uploader configs for ShareX, ScreenCloud,
21+
ishare, Spectacle (KDE), the macOS Share sheet, Xerahs, and a CLI script, all pre-filled with
22+
your instance URL and a personal token.
2123
- **Wide media support** — inline previews for images, video, audio (waveform), PDFs, and
2224
syntax-highlighted code, plus pastes and link shortening.
2325
- **Multiple storage backends** — Local disk, Amazon S3 (and S3-compatible), FTP, and SFTP.
2426
- **Content-addressed storage** — uploads are de-duplicated by content fingerprint.
2527
- **Private & public uploads** — per-resource visibility, optional password protection and
2628
expiration.
2729
- **REST API** — versioned API with token authentication and auto-generated OpenAPI docs.
28-
- **Modern authentication** — registration, email verification, password reset, and passkeys (WebAuthn).
30+
- **Modern authentication** — registration, email verification, password reset, two-factor
31+
authentication (TOTP), and passkeys (WebAuthn).
2932
- **User management** — admin roles, per-user disk quotas, and usage statistics.
33+
- **Activity log** — a searchable, filterable timeline of account and admin activity, for both
34+
your own actions and (for admins) the whole instance.
3035
- **Feature flags** — toggle sign-ups, default theme and more without redeploying.
3136
- **Theming** — switchable daisyUI themes, localization-ready UI.
3237
- **Guided web installer** — set up the database, storage, and admin account from the browser.
38+
- **In-app updates** — admins can check for new releases and upgrade the instance from the
39+
browser, with no shell access required.
3340
- **Legacy import** — migrate users and uploads from a legacy XBackBone instance, with old
3441
links transparently redirected.
3542

core/README.md

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ can be installed, upgraded and downgraded independently from the deployment skel
2222
- **Laravel Fortify** for authentication, **Sanctum** for API tokens, **Pennant** for feature
2323
flags
2424
- **Scramble** for auto-generated OpenAPI documentation
25+
- **Spatie Activitylog** for the account and admin activity feed
2526
- **Flysystem** adapters for FTP/SFTP, **php-ffmpeg** and **ImageMagick/GD** for media previews
2627
- **Vite 8** for asset bundling
2728
- Tested with **Pest 4**, analyzed with **Larastan**, formatted with **Pint**
@@ -50,9 +51,12 @@ User-facing pages are Livewire components under [`app/Livewire/`](app/Livewire):
5051

5152
- **Dashboard** — upload files, create pastes and links, manage and search your resources.
5253
- **Preview** — the public viewer for a shared resource, with media players and social embeds.
53-
- **Integrations** — generate a ShareX uploader configuration.
54-
- **Profile** — manage account info, API tokens, passkeys, data export, and account deletion.
55-
- **Admin settings** — sign-up toggle and default theme, user management, and statistics.
54+
- **Integrations** — generate uploader configurations for ShareX, ScreenCloud, ishare, Spectacle
55+
(KDE), the macOS Share sheet, Xerahs, and a CLI script.
56+
- **Profile** — manage account info, API tokens, passkeys, your activity log, data export, and
57+
account deletion.
58+
- **Admin settings** — sign-up toggle and default theme, user management, statistics, the global
59+
activity feed, and in-app updates.
5660

5761
### REST API
5862

@@ -82,6 +86,25 @@ and passkeys (WebAuthn).
8286
Global and per-user settings are managed with Laravel Pennant (see [`app/Features/`](app/Features)):
8387
`SignUp`, `DefaultTheme`, and `AlphabetForIds`.
8488

89+
### Activity log
90+
91+
Notable events — resource uploads and changes, user and token management, passkey changes, and
92+
authentication (logins, registrations, lockouts, failures) — are recorded with
93+
[Spatie Activitylog](https://spatie.be/docs/laravel-activitylog) via the listeners in
94+
[`app/Listeners/`](app/Listeners). The `ActivityLog` Livewire component renders the feed: users
95+
see their own activity under **Profile → Activity**, while admins get a global, searchable feed
96+
filterable by category (`ActivityCategory`) under **Admin → Activity**. Event presentation
97+
(labels, icons, colours) is centralised in `app/Support/ActivityEvent.php`.
98+
99+
### In-app updates
100+
101+
Admins can check for new releases and upgrade the instance from **Admin → Updates**. `CheckForUpdate`
102+
compares the installed `xbackbone/core` version against the latest stable release on Packagist, and
103+
`UpgradeApplication` rewrites the skeleton's Composer requirement and runs the post-upgrade
104+
migrations and cache steps in a detached process. The feature is only available on real skeleton
105+
deployments (`app/Support/Updater.php` gates it on production plus an `APP_ROOT`); see
106+
[`config/updater.php`](config/updater.php).
107+
85108
### Media previews
86109

87110
Previews are generated asynchronously via the `GenerateResourcePreview` job and the generators

docs/guide/configuration.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,42 @@ MAIL_FROM_ADDRESS="files@example.com"
100100
MAIL_FROM_NAME="XBackBone"
101101
```
102102

103+
### Activity log
104+
105+
XBackBone records notable events (uploads, user and token changes, logins, …) to an activity feed.
106+
It is enabled by default and needs no configuration.
107+
108+
```dotenv
109+
ACTIVITY_LOGGER_ENABLED=true
110+
```
111+
112+
| Variable | Description |
113+
| -------- | ----------- |
114+
| `ACTIVITY_LOGGER_ENABLED` | Set to `false` to stop recording activity entirely. |
115+
116+
Entries older than a year are pruned when you run `php xbb activitylog:clean` (schedule it if you
117+
want automatic housekeeping).
118+
119+
### Updates
120+
121+
The [in-app updater](/guide/upgrading#from-the-admin-area) auto-detects Composer. Only set this if
122+
it lives at a non-standard path:
123+
124+
```dotenv
125+
XBB_COMPOSER_BINARY=/usr/local/bin/composer
126+
```
127+
103128
## Runtime settings
104129

105130
The admin **Settings** page controls behaviour you can change live, including:
106131

107132
- **Sign-ups** — allow or block public registration.
108133
- **Default theme** — the daisyUI theme new visitors get.
109134
- **User management** — roles, per-user disk quotas and usage statistics.
135+
- **Activity** — a searchable, category-filterable feed of instance-wide activity. Each user also
136+
sees their own activity under their profile.
137+
- **Updates** — check for new releases and upgrade the instance from the browser. See
138+
[Upgrading](/guide/upgrading#from-the-admin-area).
110139

111140
Some of these are evaluated per user as well as globally — for example a user can pick their own
112141
theme, falling back to the global default when they haven't.

docs/guide/developer.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ deployed `app` instance you use `php xbb <command>`.
3030
[Mary UI](https://mary-ui.com/) components
3131
- **Laravel Fortify** for authentication, **Sanctum** for API tokens, **Pennant** for feature flags
3232
- **Scramble** for auto-generated OpenAPI documentation
33+
- **Spatie Activitylog** for the account and admin activity feed
3334
- **Flysystem** adapters for FTP/SFTP, **ffmpeg** and **ImageMagick/GD** for media previews
3435
- **Vite** for asset bundling; tested with **Pest**, analyzed with **Larastan**, formatted with **Pint**
3536

docs/guide/getting-started.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ screenshot and getting a shareable link can be a single keypress.
1818
- **Keep things private.** Make uploads public or private, protect them with a password, or set
1919
them to expire automatically.
2020
- **Stay organized.** Browse, search and manage everything you've shared from your dashboard.
21+
- **Keep an eye on activity.** A timeline records your account activity — uploads, logins, token
22+
and passkey changes — and admins get an instance-wide feed.
2123
- **Own your data.** Run XBackBone on your own server, with the storage backend of your choice.
2224

2325
## Your first upload

docs/guide/upgrading.md

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,33 @@ Because the core is a package, your configuration, environment and customisation
99
are untouched by an upgrade. You can also **downgrade** the same way if a release misbehaves.
1010
:::
1111

12-
## Before you start
12+
## From the admin area
13+
14+
The easiest way to upgrade is from the browser — no shell access required. As an admin, open
15+
**Settings → Updates**:
16+
17+
1. XBackBone shows your **current version** and, if one exists, the **latest release**. Use
18+
**Check now** to bypass the cache and re-query Packagist.
19+
2. Click **Upgrade** to update to the latest version. XBackBone rewrites the `xbackbone/core`
20+
requirement in the skeleton's `composer.json`, runs Composer, and then applies the new
21+
migrations and rebuilds the caches for you. Progress is streamed live on the page.
22+
23+
::: warning Requirements
24+
The in-app updater only appears on a real deployment installed through the `app` skeleton and
25+
running in production. The web server user must be able to run Composer and write to the skeleton
26+
(`vendor/`, `composer.json`, `composer.lock`). If Composer lives at a non-standard path, set
27+
`XBB_COMPOSER_BINARY` in your `.env`. When these conditions aren't met, use the manual process
28+
below.
29+
:::
30+
31+
Take a **backup** first (see below) — an in-app upgrade runs the same migrations as the manual
32+
process, and those are not always reversible.
33+
34+
## Manual upgrade
35+
36+
Prefer the command line, or the in-app updater isn't available? Upgrade by hand instead.
37+
38+
### Before you start
1339

1440
- Take a **backup** of your database and your uploaded files.
1541
- Note your **current version** so you can roll back: `composer show xbackbone/core`.
@@ -19,7 +45,7 @@ are untouched by an upgrade. You can also **downgrade** the same way if a releas
1945
php xbb down
2046
```
2147

22-
## Upgrade
48+
### Steps
2349

2450
1. Bump the constraint in the skeleton's `composer.json`, e.g.:
2551

0 commit comments

Comments
 (0)