Glyph - A Local and modern Library for Video, Series, VR, and Funscripts (Windows, Mac and Linux Compatible)

Any chance for a portable/contained version that doesn’t require a full install?
Also, why are the client and server split?

It would be nice to have a single, self contained folder to have everything relevant start with one click.

Finally, some points of feedback:

When the server has not been started, the client splash defaults messages in German. I’m guessing they say the server must be running but…it’s in German. You may either want to default them to English (if most users are English speaking), system language, or at least default to selected language if the app has opened once before.

Would also be nice if a video could be set up as a parent, with multiple versions/variations of that video selectable using the same script. Some videos will have variations like xray and the like, and being able to swap without having two library entries would be nice.

Some videos have intros, and the thumbnail can end up being of those. Being able to force regenerate individual thumbnails at a user entered timestamp would provide a nice way to fix this for those edge cases.

For device support, it seems to handle the Lovense Solace Pro poorly through intiface. It is recognized as a vibrate toy and only operates on full stroke length, modulating speed only based on intensity. Please le me know if providing some sort of diagnostics could help work through this

1 Like

Love the constant updates for this software, I’m leaning more and more on it!

I’d recommend checking out RandomVideoPlayer and see if any of those features might be of interest to implement!

1 Like

Since you are using MPV are you planning on releasing a Linux build?

1 Like

Could you add an Auto Fullscreen Option to the Internal MPV Player in Playback/Player?

1 Like

Thanks for all the Feedback :smiley:

@Easta macOS is somewhat possible, i just dont have a mac to build the project. I’ll see what i can do :slight_smile: I’ve also integrated Stashdb and ThePornDB, maybe those have the VR Content?

@Morph124 Ill take a look at that. Havent really tested much with vr, but whats your naming on your files? Glyph should detect 180_sbs for example.

@brokenobj The reason for the split setup was kind of an inspiration from Jellyfin & Emby. I thought it wouldnt be much of a pain to use both installers. The main idea was that you could install the server on a different device, maybe nas or something, and run your client somewhere else. There are also some other clients in development :x. I dont know if portable could work like that.

Thanks for the translation error, that should be in english. The parent Video idea is great, i just have to take a look on how i could implement that.

I’ll take a look at the thumbnail problem, ive tried it before but didnt succeed.

I also dont have a vibrating toy, so i couldnt fully test that. I’ll see what i can do.

@TheScriptBunny Thanks for the tip :wink:

@Kiba Like the macOS version, i dont have linux although i think this is easier to implement as linux is easier to access. got it on my list.

@Zero12 I could make a toggle in the Settings for people who want that :slight_smile: Sure.

2 Likes

In regards to naming of files, none of them have any suffix, as they’re 2d videos.
So it should default to non stretched perspective, but it defaults to 180_Sbs

1 Like

Hey just a quick follow up: to be clear, the Solace Pro is not a vibrating toy, it’s a stroker. I’m not sure why intiface interprets it as a vibrating toy when integrated with other things.

This is how it’s recognized inside the intiface app itself, but FunLIbraryManager also originally had issues because by default it was treated like a vibrating toy. You may want to look into how it, or even better, ScriptPlayer, handles the translation. ScriptPlayer had fewer issues in general, but doesn’t have a library viewer.

1 Like

Some feedback and more ideas. I’m currently switching from Stash to Glyph. I’m currently using the FUNSR1 2.0.

First positive Thought:

  • Nice modern UI and good responsiveness
  • Device connection works well with Interface, even with multiple devices.
  • Script loading time works well, and skipping mid-videos causes no hiccups for devices.
  • The internal MPV Player has some nice features, like the heatmap, but is overall not as seamless as Stash.
  • Watch Folder is a nice quality of life feature, not having to scan the library manually every time.
  • Tagging works well, especially the addition of categories, which is a good improvement.
  • Love the option for alternative Funscripts.

Didn’t test VR or the Playlist Manager yet.

Bugs:
For me, the thumbnail hover preview option causes the client to disconnect/be unresponsive from the server and seems, for me, overall unstable to use right now. I don’t know exactly where to find the logs for a better error description.

Some Ideas for Improvments:

  • Auto Connect option for Devices.

  • Filtering with multiple Tags.

  • The sorting sidebar could be displayed when using the Folder Structure as well and not just in All Videos. Also the Select Option is not there in Folder Structure.

  • The sorting sidebar could be more configurable. For me, there is no use for sorting by format or audio. Multiaxes could be moved to the Funscript section instead of having its own category. Sorting options like Funscript Speed (average speed), Last Played, and Play Count could be nice additions.

  • Some sort of rating or favorite system could be implemented but is not necessary.

  • Like Stash, there could be an option to generate a thumbnail from a timestamp if the auto-generated one sucks.

  • Having more control over the internal MPV Player, like the auto-fullscreen option as mentioned. For not having to implement every single option, you could add a text field for flags like –fs or --fs-screen=1.

Overall, I am impressed by how well Glyph is maintained right now. I was already searching for a Stash alternative, but most had some drawbacks or were poorly maintained. Hope the project keeps on going forward.

Last question: Is Glyph staying closed-source, or is open source planned on Github for example?

1 Like

Glyph v0.4.1 Changelog

  • Added Toggle Fullscreen Player option in settings (internal MPV playback behavior).
  • Localized Splash window texts across all supported languages.
  • Localized Tray menu texts across all supported languages.
  • Localized “Edit VR metadata” flow across all supported languages.
  • Improved tag logic UI with AND / OR toggle in sidebar.
  • Fixed Oscillate behavior/mapping issue. (Hopefully fixes some Toys)
  • Added new Sidebar Settings section:
    • users can show/hide sidebar blocks (e.g. Audio, Format, etc.).

Thumbnail Regeneration Improvements

  • Added “Regenerate thumbnail” action to context menus.
  • Added live preview in regenerate dialog (exact selected timestamp before apply).
  • HH control is only enabled when the video is at least 1 hour long.

Performance

  • Optimized thumbnail generation CPU usage:
    • reduced default thumbnail concurrency,
    • limited FFmpeg threads per thumbnail job.

I’ll make it open source at some point, if i feel like its fleshed out enough :slight_smile:

Edit: Wait hold on, for some reason folder structure view isnt working anymore.
Edit2: Should be fixed now. New Server and Client Files are on patreon :slight_smile:

2 Likes

The 0.4.1 update made it so the app does seem to recognize the Lovense Solace Pro now as a linear device, however it still treats output the same, doing full strokes with speed based on the script position (so it just speeds up and slows down a bunch), rather than mapping position to follow the script like another stroker would.

Let me know if there’s anything I can provide to help

1 Like

Godspeed on the Update.

Works all well, thanks for implementing most of suggested ideas. Obviously only add stuff you think is practical, I just throw some more thoughts at you XD.

The only thing I can think of that’s a bit unclean is that switching videos often opens multiple instances of MPV, which is probably not intended and a Bug. Funny enough, it seems that it always works once (open video, switch video works, switch again opens a new instance without closing the old one… repeat).

A further improvement to the tag system now that it is possible to search for multiple tags could be making it more reactive in future updates. If, for example, I search for the Tag HMV, the other tags numbers could change how many videos would be available with that combination. If there is none, it could be grayed out or even not displayed.

In Folder Structure, created tags are not displayed on the sidebar. Don’t know if that’s intended or not.

A very small thing could be remembering Sorting from last session. I always use Date created + Descending so the new stuff comes first. It would be nice if that could be saved as default. But the again its just 2 clicks so not importent really.

And tested more with my FUNSR1 2.0. Very fast scripts don’t work with Interface. Have to patiently wait for TCode implementation.

1 Like

Glyph v0.5.0 Changelog

Library & Browsing

  • Folder Structure fixes
    • Stabilized rendering and interaction behavior in folder view.
  • Audio filtering fixed
    • With audio / Without audio now return correct results.
  • Funscript selection fixed
    • Funscript filter behavior is now consistent.
  • Folder Structure tag visibility fixed
    • Tags are shown correctly in folder view again.
  • Tag counts added
    • Tag entries now show item counts.
  • Resolution on thumbnails added
    • Thumbnails now show quality badges (720p / 1080p / 4K).
  • VR default fallback set to 2D Flat
    • Unknown projection now defaults to non-stretched flat playback.

Favorites

  • File extension removed + favorites added
    • Card badge cleanup
  • Favorites sorting added
    • Library can now be sorted by favorite status.
    • You can now favorite videos by clicking on the start on the lower right corner of the thumbnail.

Player

  • Multiple MPV instances bug fixed
    • Switching videos no longer opens unintended extra player instances.

Devices

  • Toy handling fixed again
    • Improved runtime behavior for devices (e.g. Lovense).
  • T-Code added
    • Added T-Code device integration

Platform Support

  • macOS support added
    • Added build/runtime support for macOS.
  • Linux support added (not tested)
    • Linux build pipeline available; runtime validation still pending.

VR / HereSphere

  • HereSphere integration fixed
    • Improved feed, metadata compatibility, and playback integration.
3 Likes

Latest updates seem to work nicely, the heresphere api is detecting the Mono VR videos and the connection to the device is nice and steady

1 Like

Glad to hear :slight_smile:

Hey! I see TCode Implementation in this version, but no luck yet with getting it to work. MFP and Intiface both connect to it, and even FapTap can output through WebSerial, but it shows “?” as the COM port when connected and it does not seem to output when running a video. Any ideas? Not using the C Drive if that matters any.

weird, could you provide me a screenshot? T-Code works on my end.

Im uploading 0.5.1 soon which fixes some bugs and adds more functionality to t-code. Maybe this somehow fixes your problem.

Same issue as above, although I am using a Mirabot S6 if that makes any difference.
screenshot:

1 Like

Thanks, ill take a look at that

Glyph v0.5.1

Remote Server Connection (new)

  • Added a new “Connection” section in Settings.
  • You can now connect to any Glyph Server using a custom address (e.g. 192.168.1.50:4000).
  • Ideal for multi-machine setups.

Dashboard

  • Added generate buttons to trigger generated content directly.

Library / Tags

  • Fixed Folder Structure tag selection.
  • Tag selection and filtering behavior in Folder Structure now matches the rest of the library.

Devices / T-Code

  • Disconnect fix: T-Code devices no longer remain in a bad/active state after disconnect.
  • T-Code Settings localization: the “Settings” title now consistently uses the localized navSettings key across all languages.
  • Smoothing interaction fix: clicking the “Smoothing” label no longer accidentally opens/changes dropdowns.

T-Code Update

Motion Provider System (new)

  • Added per-axis provider modes: Auto, Off, Random, Link.

Random Provider (new)

  • Added organic random motion using simplex/fractal noise.
  • Adjustable via Speed and Smooth.

Link Provider (new)

  • Added axis linking so one axis can follow another.
  • Optional invert mode included.

All-Axis Sync Loop Upgrade

  • Sync loop now processes all 6 axes consistently, not only currently scripted-active ones.

Provider State API (new)

  • Added getEffectiveProvider() and getEffectiveProviders() for live UI state polling.

Seek Sync Reliability Fix (major)

  • syncSeek() now clears pending timers, resets indices, and safely restarts the loop with soft-start.
  • Prevents stale segment playback after seeking.

DevicePanel UX Improvements

  • Added a new Motion column with per-axis dropdowns.
  • Expandable Random/Link controls.
  • Provider status indicators.

Playback Sync Stability (Fixed)

  • Linear mode seek: skipping during playback no longer causes full device stop or stale segment continuation.
  • PCHIP mode seek: skipping now re-syncs correctly without pause/resume and no longer causes movement while video is paused.
  • Overall seek/play/pause transitions are now more consistent across interpolation modes.

Heatmap

  • Multiple heatmap rendering fixes:
    • Fixed inconsistent heatmap display across UI views.
    • Corrected MPV heatmap color rendering.

Player

  • Same-video playback window fix: resolved an edge case where clicking the same video could open an extra/blank player window.

UI

  • Updated the Device icon.
2 Likes

@shi9dh89sdvy89sd89v @Ultari123 Could you try this release?

Please provide the logs in the dashboard if its still not working.