Chevereto 4.1

Introducing the Pulento series V4.1

One year and seven months ago I introduced Chevereto 4 (Macanudo). It was the biggest Chevereto release ever, took about five years of work and compromised an entire code rewrite which is progressively happening.

Macanudo was the first step for next gen Chevereto and today I’m very proud for presenting the next iteration: Chevereto “Pulento” V4.1.

# How Pulento?

The term pulento is Chilean slang, it means "wonderful", “magnificent”, "excellent", "powerful" among other opulent meanings. I took this word as the codename as it represents my dedication with Chevereto and how I want the world to know about it, how I want you to refer to my work.

Chevereto is Pulento because it now supports video which opens a complete new world of possibilities and content sharing. All fits right in place as video support seamless integrate with the existing software system and user interface. As freedom is our motto at Chevereto there's no limits at all with support for videos of any length and size, you can host 1-second videos up to full length movies.

Forget hosting your videos on paywall, ad-based and heavy surveyed services like YouTube or Instagram. You, your content and your visitors are not the product here, I don't have any business tracking your activity on any level.

On Pulento I'm starting the process of delivering the user-based API which will gradually turn Chevereto into a headless CMS. No time for monkey-patching a pile of third-party services to build a software system, our API will enable you to build full-fledged software without leaving the same API and thanks to Chevereto's massive feature set you will be able to craft unique experiences and shadow any existing media-based application.

# Video support

🎥 Chevereto now supports video content

To support video in an system born for image sharing is not trivial. It requires different handling and it represents another order of magnitude for storage and CDN concerns as a single video could require more space than an entire photo album. That’s why on Pulento External Storage functionality has been improved to limit the media type allowed, enabling to setup separated dedicated performant storage for all your allowed media types.

storage type modal

Video requires FFMPEG and when I first survey this feature (circa 2014) I noticed that it wasn’t common neither performant enough for mainstream server hardware. Ten years later I’m very happy and surprised with how performant and fast FFMPEG runs now, it fits perfect for our need. Thanks to this on Pulento there’s no limits on video (application layer) although is very likely that later on I will add admin-configurable soft restrictions on video duration.

$frameFile = Upload::getTempNam(sys_get_temp_dir());
$ffmpeg = FFMpeg::create();
$video = $ffmpeg->open($file);
$video
    ->frame(TimeCode::fromSeconds($time))
    ->save($frameFile);

Video requires to generate and store a video frame, a raster image which represents the video. This image is used as video poster and at listings. To store that frame I needed to tweak the image_chain database attribute, which is a decimal representation of a the binary tree which I use to determine the images (sizes) available for each upload. Here’s the table (part of it):

image chain

The addition won’t conflict with the previous chain, that’s the whole point of using a binary representation.

Embedding needed modification as video requires to use the <video> HTML tag. As there’s no video embed for BBCode and Markdown I had to workaround a poly-fill based on using the video frame and linking it to the video viewer page. It is likely that later on I will add support for third-party video players to circumvent the limitations of HTML video.

embed image video

To upload video using the web browser it requires to read the video. I needed to tweak the loading function and canvas preview generation to understand video content. On this regard web browsers limit a bit this functionality to WebM and MP4. This is a case where the user-based API becomes more relevant, as the API won’t be limited by the web browser enabling to upload more formats in the future. With dedicated applications powered by Chevereto's API I could support any media format, and that's what exactly I'm going to do.

uploader

This is an ongoing development, I’m sure that we will get a lot of sweet video-related updates in the future as users contribute their ideas and needs. I’m eager to see how users help me to shape the best self-hosted media sharing platform with Chevereto.

# User-based API

🥑 Use and send commands to Chevereto from anywhere

By being a web application Chevereto is available everywhere, but constrained to the web browser. In the early days this was a serious issue but thankfully web technology has evolved to a point where web browsers works "pretty much the same" but the constrains that worried me are still there and I'm done with it, technology won't improve any further.

This is because web browsers have limited resources, local storage, cache and many other caveats that have jailed Chevereto for too long. My goal is to get Chevereto free of all these boundaries and the only way to achieve that is turning Chevereto into a headless CMS.

But Chevereto is massive as you may expect from any system that has about two decades of active development. Because of this the process must be progressive and you can read about it at User-based API announcement.

# Customizable theme font

👻 Easy select Chevereto system font to fit your style

Chevereto uses Helvetica by default and while it looks gorgeous there are several use cases where a different font may suit better for your needs. If your brand or product identifies with a given font type then being able to easy customize the system font becomes more relevant.

font selection

With Pulento you can choose from a wide selection of safe zero-load web fonts including sans-serif, serif, monospace and more.

# Changelog

Chevereto Pulento also includes a long list of minor improvements and bug fixes. You can read the full changelog at Chevereto 4.1.0.

  • 🎥 Added support for video files
  • 🎥 Added frame image size for video uploads
  • 🎥 Added oEmbed support for video
  • 🎥 Added video support for anywhere uploader
  • 🎥 Added video support for embed codes
  • 🎥 Added Video to Discovery (Explore)
  • ✅ Added display_title media property
  • ✅ Added enabled file type options for External Storage
  • ✅ Improved support for PUP.js for SMF 2.1+
  • ✅ Unified embed codes display
  • 💅 Added display_title to full screen listing viewer
  • 💅 Added edition name at installation details
  • 💅 Added one-click theme font configuration
  • 💅 Added over effect to display_title on listings
  • 💅 Added video duration on listing items
  • 💅 Changed "image" references to "file"
  • 💅 Changed Trending icon
  • 💅 Improved listing icons for like and share
  • 💅 Improved password display helper when using Safari
  • 💅 Improved uploader size limit display
  • 💅 Stop preventing list-item-desc link behavior
  • ⏲️ Added button to manually run CRON
  • 💬 Added link to Chevereto discord at Dashboard
  • 🤚 Added welcome message on new installation
  • 🐞 Fixed bug in homepage delete cover action
  • 🐞 Fixed bug on upload route
  • 🐞 Fixed bug with password protected albums
  • 🐞 Fixed unwanted scroll hide top-bar in Safari

# Timeframe

Chevereto Pulento V4.1 development started amid March 2024 and it was announced on March 19 with the introduction of video support and customizable theme font.

Video and customizable theme font will be available within April, the user-based API will be rolling out in the following months in a progressive incremental process.

Patches will be delivering enhancements to video and the user-based API.

Rodolfo blogging since 2012.