PHPackages                             texxasrulez/force\_elastic - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. texxasrulez/force\_elastic

ActiveRoundcube-plugin

texxasrulez/force\_elastic
==========================

Roundcube webmail plugin that forces the Elastic skin on phones and tablets at runtime (no user preference changes).

1.0(8mo ago)011GPL-3.0PHPPHP &gt;=7.3

Since Aug 23Pushed 7mo agoCompare

[ Source](https://github.com/texxasrulez/force_elastic)[ Packagist](https://packagist.org/packages/texxasrulez/force_elastic)[ Docs](https://github.com/texxasrulez/force_elastic)[ RSS](/packages/texxasrulez-force-elastic/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (1)Versions (2)Used By (0)

force\_elastic — Roundcube plugin
=================================

[](#force_elastic--roundcube-plugin)

[![Packagist Downloads](https://camo.githubusercontent.com/52683aa7390fdd526ca414f927e88625538901029b38c6ef4cc72e700f1ccfdb/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f74657878617372756c657a2f666f7263655f656c61737469633f7374796c653d706c6173746963266c6f676f3d7061636b6167697374266c6f676f436f6c6f723d7768697465266c6162656c3d446f776e6c6f616473266c6162656c436f6c6f723d626c756526636f6c6f723d676f6c64)](https://packagist.org/packages/texxasrulez/force_elastic)[![Packagist Version](https://camo.githubusercontent.com/d0a7c1e0862230bfd9d09bf049f8bfb0dd0e25864fd629a901612868b0067ba0/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f74657878617372756c657a2f666f7263655f656c61737469633f7374796c653d706c6173746963266c6f676f3d7061636b6167697374266c6f676f436f6c6f723d7768697465266c6162656c3d56657273696f6e266c6162656c436f6c6f723d626c756526636f6c6f723d6c696d65677265656e)](https://packagist.org/packages/texxasrulez/force_elastic)[![Github License](https://camo.githubusercontent.com/1865b54b80360a925fd8f20a2d1af218ba328bef792455d120e95085f3096f05/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f74657878617372756c657a2f666f7263655f656c61737469633f7374796c653d706c6173746963266c6f676f3d676974687562266c6162656c3d4c6963656e7365266c6162656c436f6c6f723d626c756526636f6c6f723d636f72616c)](https://github.com/texxasrulez/force_elastic/LICENSE)[![GitHub Stars](https://camo.githubusercontent.com/76887c0bcf38f2cd618eac6e821a438be1fb67c71aa8befec102437cc1bd19f2/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f74657878617372756c657a2f666f7263655f656c61737469633f7374796c653d706c6173746963266c6f676f3d676974687562266c6162656c3d5374617273266c6162656c436f6c6f723d626c756526636f6c6f723d64656570736b79626c7565)](https://github.com/texxasrulez/force_elastic/stargazers)[![GitHub Issues](https://camo.githubusercontent.com/78f98b2a41541058c4af4f99d2ccb9fd9b85089a45d9ce70e9eb6aff96526846/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f74657878617372756c657a2f666f7263655f656c61737469633f7374796c653d706c6173746963266c6f676f3d676974687562266c6162656c3d497373756573266c6162656c436f6c6f723d626c756526636f6c6f723d61717561)](https://github.com/texxasrulez/force_elastic/issues)[![GitHub Contributors](https://camo.githubusercontent.com/c78bdcd39a415a0957a0ee4d09ba05114d75385e722d90058b54d46a07e249db/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f74657878617372756c657a2f666f7263655f656c61737469633f7374796c653d706c6173746963266c6f676f3d676974687562266c6f676f436f6c6f723d7768697465266c6162656c3d436f6e7472696275746f7273266c6162656c436f6c6f723d626c756526636f6c6f723d6f7263686964)](https://github.com/texxasrulez/force_elastic/graphs/contributors)[![GitHub Forks](https://camo.githubusercontent.com/e3e8ad0515a77c82e008a3fb2a05608fd5115b40ddb345b8709190d264297f4c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f74657878617372756c657a2f666f7263655f656c61737469633f7374796c653d706c6173746963266c6f676f3d676974687562266c6f676f436f6c6f723d7768697465266c6162656c3d466f726b73266c6162656c436f6c6f723d626c756526636f6c6f723d6461726b6f72616e6765)](https://github.com/texxasrulez/force_elastic/forks)[![Donate Paypal](https://camo.githubusercontent.com/02124075ee7ea4c192ef867cb30577b0b43ba74ea42b8dbe20b56ef518d94cdb/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f50617970616c2d4d6f6e65795f506c65617365212d626c75652e7376673f7374796c653d706c6173746963266c6162656c436f6c6f723d626c756526636f6c6f723d666f72657374677265656e266c6f676f3d70617970616c)](https://www.paypal.me/texxasrulez)

Forces the **Elastic** skin for requests coming from mobile devices — without changing the user's saved skin preference or your system default. This keeps small screens functional even when users have selected legacy/non-responsive skins.

- **Repo:** [https://github.com/texxasrulez/force\_elastic](https://github.com/texxasrulez/force_elastic)
- **Type:** `roundcube-plugin`
- **Requires:** Roundcube **1.4+** (Elastic introduced in 1.4), PHP **7.3+**

What it does
------------

[](#what-it-does)

- Detects mobile clients early in request flow (`startup` and `authenticate` hooks).
- Sets the runtime skin to `elastic` and, when present, updates the Output object's skin.
- Uses Roundcube's browser detector if available; otherwise falls back to a tight UA regex.
- Never persists preferences. Desktop users keep their chosen skin.

---

Install via Composer (recommended)
----------------------------------

[](#install-via-composer-recommended)

This path installs straight from Packagist/Git and lets Roundcube's plugin-installer wire it up.

1. From your Roundcube root directory:

```
composer require texxasrulez/force_elastic
```

2. Enable the plugin in `config/config.inc.php`:

```
// Append to your existing list, do not duplicate other plugins
$config['plugins'] = array_merge($config['plugins'] ?? [], ['force_elastic']);
// or set explicitly:
// $config['plugins'] = ['force_elastic', /* other plugins... */];
```

3. Clear Roundcube caches (good hygiene after plugin changes):

```
bin/cleandb.sh || true
bin/update.sh --skip-deps || true
```

### Installing directly from Git (optional)

[](#installing-directly-from-git-optional)

If you prefer to track the GitHub repo without Packagist:

```
cd /path/to/roundcube
composer config repositories.force_elastic git https://github.com/texxasrulez/force_elastic.git
composer require texxasrulez/force_elastic:dev-main
```

---

Manual install (no Composer)
----------------------------

[](#manual-install-no-composer)

1. Copy the `force_elastic` plugin folder into Roundcube:

```
/path/to/roundcube/plugins/force_elastic

```

2. Enable it in `config/config.inc.php` as shown above.

---

Configuration
-------------

[](#configuration)

An optional config file is provided. Copy `plugins/force_elastic/config.inc.php.dist` to `plugins/force_elastic/config.inc.php` and adjust as needed.

```
// Skin to force on mobile devices (keep 'elastic' unless you know what you're doing)
$config['force_elastic.skin'] = 'elastic';

// Optionally disable the fallback UA sniff; rely solely on Roundcube's browser detector
$config['force_elastic.use_ua_sniff'] = true;
```

No configuration is required for default behavior.

---

How detection works
-------------------

[](#how-detection-works)

1. Prefer Roundcube's built-in browser detector (if available on your version/path).
2. Fall back to a conservative `User-Agent` regex for common phones/tablets.
3. Apply skin change at runtime only; no DB writes and no preference mutations.

---

Uninstall
---------

[](#uninstall)

- Remove `'force_elastic'` from `$config['plugins']` in `config/config.inc.php`.
- If installed via Composer: `composer remove texxasrulez/force_elastic`.
- Delete `plugins/force_elastic/` if manually installed.

---

Troubleshooting
---------------

[](#troubleshooting)

- **Elastic isn’t applied on mobile:** Check proxies/CDNs that might rewrite `User-Agent`. If so, rely on Roundcube's detector by disabling UA sniff in the plugin config.
- **Conflicts with other skin/branding plugins:** Ensure `force_elastic` is loaded after any plugin that explicitly sets a skin for all requests.
- **Caching:** Clear browser cache and Roundcube caches after first install.

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance62

Regular maintenance activity

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity30

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

261d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/95c3af6e41a9786e8be2edb48176e43a7d1ddef429793a312168450ff4269deb?d=identicon)[texxasrulez](/maintainers/texxasrulez)

---

Top Contributors

[![texxasrulez](https://avatars.githubusercontent.com/u/10519182?v=4)](https://github.com/texxasrulez "texxasrulez (17 commits)")

---

Tags

pluginroundcubemobileelasticresponsiveskin

### Embed Badge

![Health badge](/badges/texxasrulez-force-elastic/health.svg)

```
[![Health](https://phpackages.com/badges/texxasrulez-force-elastic/health.svg)](https://phpackages.com/packages/texxasrulez-force-elastic)
```

###  Alternatives

[nolimits4web/swiper

Most modern mobile touch slider and framework with hardware accelerated transitions

41.8k177.2k1](/packages/nolimits4web-swiper)[nicolafranchini/venobox

Responsive JavaScript modal window plugin, touch swipe gallery

7106.8k](/packages/nicolafranchini-venobox)[chronon/mobile_detect

A CakePHP plugin component for identifying mobile devices using the Mobile\_Detect project.

24246.5k1](/packages/chronon-mobile-detect)[outhebox/nova-fields-agent

This field give the ability to hide fields from your resources table on mobile screens for a better responsive concept

101.1k](/packages/outhebox-nova-fields-agent)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
