Mantequilla-Soft – Weekly Progress Report #5

in HiveDevs10 days ago

▶️ Watch on 3Speak


Welcome to another Mantequilla-Soft Weekly Report!

Another week full of updates. This report might be shorter this time, but that doesn't mean that we have slowed down. We are making good progress, and we keep adding more butter (mantequilla) so everything is smoother. There are still many things to do, but we are getting there.

This week, @tibfox was not able to join us as he took a well-deserved vacation. But he was one of the main contributors this week, so we will briefly discuss some of the achievements, as I think that it's fair that he makes a vlog to show what he has accomplished in detail. This, of course, will depend on his availability. But long story short, new 3Speak videos and shorts will be able to have caption in in different languages.

On the other hand, @kesolink is making good progress with the audio uploads via 3Speak. In the video, you can see the UI elements he has built. There is a feed of audio from the Snapie apps, and the idea is that this way, people can upload music, podcasts, etc., without having to upload a video. There are still things to define, but we are getting there.

This week, @meno has been active, working on improvements on @snapie. He has built a React-based video player that enables him to better adapt and customize it for Snapie. He has also been working to make Snapie more complete and to make the necessary changes so the keys are saved and encrypted the same way Keychain does it. This will enable newbies and normies to do more blockchain actions inside Snapie, and they won't be forced to download other apps. Therfore lowering the learning curve.

Last but not least, @eddiespino, aka the guy who writes these reports, was busy helping @tibfox with the deployment of the translation app. It was challenging, but Eddie was able to deploy the app on one of the 3Speak servers, and it all worked. Also, Eddie worked this week to improve the gateway monitor by adding UI and UX changes.

The above is a brief summary of this week's achievements. If you want more details, check out the contributions below.


coverr5.png


By the way, don't forget to check the 3Speak Preview at:

https://preview.3speak.tv/ - (This is like a beta version of 3Speak)


Summary of updates by contributors:

@tibfox

3Speak Translator and Subtitles Generator

3Speak Translator:

A self-hosted translation and subtitle serving service built with Docker. It runs two components: a LibreTranslate instance that powers real-time comment translation across the 3speak.tv frontend (supporting 34 languages with auto language detection), and a lightweight Node.js API that serves video subtitle files stored in MongoDB by author and permlink. The frontend connects to it via the VITE_TRANSLATE_API_URL environment variable.

GitHub Repo: https://github.com/Mantequilla-Soft/3speak-translator


3Speak Subtitle Generator:

An AI-powered pipeline that automatically generates and translates subtitles for 3Speak videos. It uses OpenAI's Whisper for speech-to-text transcription, the NLLB-200 model for translation into 21+ languages, and a zero-shot classification model for automatic content tagging. Videos are fetched directly from IPFS, processed on CPU (12–19 min per video), and the resulting SRT files, along with metadata, are stored in MongoDB. Fully Dockerized and configurable via a YAML file.

GitHub Repo: https://github.com/Mantequilla-Soft/3speak-subtitle-generator

image.png

image.png


@kesolink

3Speak Audio Platform — Weekly Development Report (Feb 17–23, 2026)

This week's @kesolink's development focused entirely on the frontend of the 3Speak Audio Platform, with five major areas completed and shipped.

Audio Player received several important fixes. Playback was previously slow because the audio file only started loading when the user pressed play — this has been resolved by preloading the file as soon as the page opens, making playback feel near-instant. An automatic IPFS gateway fallback was also added, meaning if one gateway fails to serve the file, the player silently switches to another without interrupting the experience. Two additional bugs were fixed: the play button was getting out of sync with the actual playback state, and the track duration was being pulled from the API (which could be inaccurate) rather than read directly from the audio file itself.

image.png

Upload Selection underwent a significant rebuild. The component was converted from a plain HTML and Tailwind setup into a proper React component with SCSS styling. Icons were migrated from Iconify to Lucide via react-icons for better consistency. The interface is now fully responsive across mobile, tablet, and desktop. An authentication check was also added — previously, logged-out users might have been redirected to the studio or encountered unexpected behavior; now they see a clear error message instead.

Audio Feed now supports pagination through a "Load More" button, allowing users to progressively browse content without overwhelming the initial load. All edge cases are handled gracefully, including loading states, error states, and an empty state when no content is available. A subtle detail was also addressed: the header is hidden during the initial load to prevent a layout flicker before content appears.

Audio Card is a new reusable component that displays individual audio tracks. It features an animated waveform visual, the creator's avatar, play and like counts, and the upload time. It also supports a compact mode, designed specifically for use in tighter spaces like sidebars.

Sidebar is a new "More Audios" panel that appears on the player page. It fetches the 12 most recent tracks, automatically filters out the one currently playing so there's no duplication, and displays the results using the Audio Card component in its compact mode — a good example of component reuse keeping the codebase clean.


@meno

Snapie Player — Mobile API Update

The Snapie HTML5 Video Player server got a new feature that makes it easier for the mobile app to play videos without doing extra work on the client side.

What was added: A new info=true parameter you can append to existing API endpoints (/api/watch and /api/embed). When called, it returns a lightweight JSON response with just four fields — the CDN video URL, the thumbnail URL, whether it's a short, and the view count. All URLs come back pre-resolved and ready to use.

Why it matters: Previously, the mobile app would have had to handle IPFS-to-CDN conversion, fallback URL chains, and gateway logic itself. Now Snapie handles all of that server-side, so the mobile team can just pass the cid URL directly to the native video player. No extra logic needed.

Key wins: Faster startup on mobile, lower memory footprint on low-end devices, and a single source of truth for video state management (deleted, processing, failed videos are all handled). Existing web API endpoints are completely unchanged.

Status: Feature complete, documented in MOBILE_API_SPEC.md, and ready for the mobile team to integrate. The feature branch feature/mobile-api-info-endpoint is ready for production deployment.


Snapie.io — Recent Fixes Report

Two pull requests are open addressing UX consistency and a frustrating session bug.


Fix #1: Interaction Bar Refactor

The app had duplicated voting/interaction logic spread across multiple components. Snaps already had a clean, isolated pattern, but blog posts (PostCard and PostDetails) each had their own copy of the voting state, handlers, and UI — about 60-70 redundant lines per component.

The fix creates a single shared InteractionBar component that handles everything — votes, slider, comment count, share, payout — and both blog components now just drop in one line. PostCard went from 220 to 133 lines, PostDetails from 270 to 138. Net result: ~186 lines removed, one place to maintain, consistent UX across the whole app.


Fix #2: Logout Race Condition

Users were getting logged out on page refresh even with a valid session cookie. The root cause was a race condition — on page load, the app was checking whether the Hive Keychain browser extension was available before the extension had finished injecting into the page. Since it wasn't ready yet, the session check failed and the user got booted.

The fix decouples session restoration from extension availability. Now the app restores the session from the cookie immediately, and checks for the extension only when it's actually needed (e.g. to sign a transaction). A lightweight pub/sub event (hiveuser-saved) was also added so the user context updates reactively when account data arrives asynchronously. Only 10 lines changed, false logouts eliminated.


HiveSnaps — Multi-Account Management Feature

This is a substantial feature shipping to production, adding full multi-account support to the HiveSnaps mobile app — about 2,750 lines of new code across 4 new screens, 2 services, and various hooks.


What it does

Users can now store, switch between, and manage multiple Hive blockchain accounts from a single app. Each account shows an avatar and a badge indicating whether it has Full Access (active key stored) or Posting Only. Accounts are sorted by most recently used, and a long-press opens management options like adding an active key or deleting the account.


Security model

All private keys are encrypted at rest using AES-256-CBC with PBKDF2 key derivation (100,000 iterations) — the user's PIN is the only thing that unlocks them. Keys are only held in memory during an active session, which auto-expires after 5 minutes of inactivity. Every account switch requires PIN re-entry. Secure storage uses iOS Keychain and Android EncryptedSharedPreferences under the hood.


Auth & session flow

A new useAuth() hook centralizes everything — login, logout, account switching, JWT management for the backend API, and session validation. When a session expires, the user is redirected to the account selection screen and must re-enter their PIN to continue.


Migration

Users upgrading from the old single-account system are guided through a migration screen that explains the new PIN and multi-account system, migrates their existing credentials seamlessly, and cleans up legacy storage afterward.


Status

Fully tested on iOS and Android, edge cases covered, and pushed to GitHub. Biometric unlock (Face ID/Touch ID) is flagged as the most likely next enhancement.


@eddiespino

Monitor 3Speak TV — PR #3 Summary

A broad cleanup PR touching the dashboard, jobs page, analytics, and a couple of backend bugs.

Dashboard got a layout tidy-up — the Available Jobs card was removed and the remaining cards were reorganized into a clean 3+2 grid. The manual refresh button now shows a loading spinner while it works.

Jobs page now shows Hive profile pictures in the encoder column, got a useMemo for filtering performance, a fix for a column breakpoint mismatch, and a Tooltip for truncated DID keys that were being cut off.

Job Details drawer also picks up the Hive profile picture in the encoder section, keeping it consistent with the jobs page.

image.png

image.png

Analytics had two meaningful fixes — the 30D and 90D job count filters were broken because the MongoDB query was hardcoded to 7 days regardless of what you selected. The encoder jobs dialog was also overhauled: Job ID and Quality columns removed, video links made clickable, and pagination added.

Backend had two bugs fixed — hive_account wasn't being returned in the encoder stats response, and the /auth/check endpoint was referencing the wrong config keys (config.auth.* instead of config.admin.*), which meant admin login always failed in the UI no matter what credentials you entered.


MantequillaC.png

YouTube Mirror:


Join our Discord Communities:

3SpeakSnapieProyecto Aliento


Support our Witnesses:

ThreespeakSnapieAliento


https://www.mantequilla-soft.com/

https://github.com/orgs/Mantequilla-Soft/repositories


▶️ 3Speak

Sort:  

I'm just trying the captions on your video and the quality is good.

I am finding that the speed button does not work for me. Sometimes I want to speed a video up if it is just speech.

You are doing great work.

!BEER

Apoyando en lo que se pueda. Un gran equipo de trabajo. Muchísimo éxito. Un abrazo.

Supporting in any way I can. A great team. Wishing you much success. Hugs.

Saludos a todo el equipo, gracias por todo lo que hacen.

This is incredible, love the work rate 🚀

Thank you!

You're welcome !

Congratulations @mantequilla-soft! You have completed the following achievement on the Hive blockchain And have been rewarded with New badge(s)

You distributed more than 800 upvotes.
Your next target is to reach 900 upvotes.

You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP


Congratulations @mantequilla-soft!
You raised your level and are now a Minnow!

Check out our last posts:

Hive Power Up Day - March 1st 2026