From 2e22f762ee4f87db6ef3c0b21ef897d5de35ed79 Mon Sep 17 00:00:00 2001 From: nbats <44333466+nbats@users.noreply.github.com> Date: Fri, 2 Jan 2026 04:47:49 -0800 Subject: [PATCH 1/9] updated 9 pages --- docs/ai.md | 6 +++--- docs/audio.md | 6 +++--- docs/gaming-tools.md | 2 +- docs/image-tools.md | 2 +- docs/internet-tools.md | 1 + docs/misc.md | 3 ++- docs/privacy.md | 2 +- docs/storage.md | 2 +- docs/video.md | 7 ++++--- 9 files changed, 17 insertions(+), 14 deletions(-) diff --git a/docs/ai.md b/docs/ai.md index e85bf08b7..75234bb06 100644 --- a/docs/ai.md +++ b/docs/ai.md @@ -303,7 +303,7 @@ * 🌐 **[VBench](https://huggingface.co/spaces/Vchitect/VBench_Leaderboard)** - Video Generation Model Leaderboard * ⭐ **[Grok Imagine](https://grok.com/imagine)** - 30 Daily / Imagine 0.9 / [Subreddit](https://www.reddit.com/r/grok/) / [Discord](https://discord.com/invite/kqCc86jM55) -* [⁠GeminiGen AI](https://geminigen.ai/) - Unlimited / Sora 2 / Veo 3.1 +* [⁠GeminiGen AI](https://geminigen.ai/) - Unlimited / Sora 2 / Veo 3.1 / [Discord](https://discord.gg/vJnYe86T8F) * [Bing Create](https://www.bing.com/images/create) - Sora 1 / No Image Input * [Sora](https://openai.com/index/sora/) - 6 Daily / [Signup Guide](https://github.com/fmhy/FMHY/wiki/FMHY%E2%80%90Notes.md#sora) / [Remove Watermarks](https://unmarkit.app/sora) * [Qwen](https://chat.qwen.ai/) - 10 Daily / [Discord](https://discord.com/invite/CV4E9rpNSD) / [GitHub](https://github.com/QwenLM) @@ -338,7 +338,7 @@ * [⁠ISH](https://ish.chat/) - Unlimited / GPT Image 1 mini / Dall-E 3 / Flux Kontext (dev) / Editing / No Sign-Up / [Discord](https://discord.gg/cwDTVKyKJz) * [Grok](https://grok.com/) - 96 Daily / Editing / Sign-Up Required / [Subreddit](https://www.reddit.com/r/grok/) / [Discord](https://discord.com/invite/kqCc86jM55) * [Qwen](https://chat.qwen.ai/) - 30 Per 24 Hours / Editing / Sign-Up Required / [Discord](https://discord.com/invite/CV4E9rpNSD) / [GitHub](https://github.com/QwenLM) -* [⁠GeminiGen AI](https://geminigen.ai/app/imagen) - Unlimited / Nano Banana Pro / Sign-Up Required +* [⁠GeminiGen AI](https://geminigen.ai/app/imagen) - Unlimited / Nano Banana Pro / Sign-Up Required / [Discord](https://discord.gg/vJnYe86T8F) * [Recraft](https://www.recraft.ai/) - 30 Daily / Sign-Up Required / [Discord](https://discord.gg/recraft) * [Reve Image](https://app.reve.com) - 20 Daily / Editing / Sign-Up Required / [X](https://x.com/reve) / [Discord](https://discord.gg/Nedxp9fYUZ) * [ImageFX](https://labs.google/fx/tools/image-fx) - Imagen 4 / Unlimited / Region-Based / Sign-Up Required / [Discord](https://discord.com/invite/googlelabs) @@ -346,11 +346,11 @@ * [⁠ZonerAI](https://zonerai.com/) - Unlimited / Editing * [⁠Vheer](https://vheer.com/) - Unlimited / Flux Kontext Dev / Flux Schnell * [Perchance](https://perchance.org/ai-photo-generator) / [2](https://perchance.org/ai-text-to-image-generator) - Chroma / Unlimited / No Sign-Up / [Resources](https://perchance.org/perlist) / [Subreddit](https://www.reddit.com/r/perchance/) / [Discord](https://discord.gg/43qAQEVV9a) +* [AIGazou](https://muryou-aigazou.com/) - Flux / Z-Image Turbo / Unlimited / No Sign-Up / Seedream 3 / GPT Image 1 / 10 Daily / Sign-Up Required / [Discord](https://discord.gg/v6KzUbPeKh) * [Z-Image](https://huggingface.co/spaces/Tongyi-MAI/Z-Image-Turbo) - z-Image / [GitHub](https://github.com/Tongyi-MAI/Z-Image) * [⁠Ernie](https://ernie.baidu.com/) - Unlimited / Editing / Sign-Up Required * [LongCat AI](https://longcat.chat/) - 100 Daily / Editing * [Pollinations Play](https://pollinations.ai/play) - Z-Image Turbo / 5K Daily ⁠Pollinations -* [AIGazou](https://muryou-aigazou.com/) - Flux / Stable Diffustion / Chroma / Unlimited / No Sign-Up / SeeDream 3 / GPT 1 Image / 10 Daily / Sign-Up Required / [Discord](https://discord.gg/v6KzUbPeKh) * [Mage](https://www.mage.space/) / [Discord](https://discord.com/invite/GT9bPgxyFP), [⁠Tater AI](https://taterai.github.io/Text2Image-Generator.html), [Loras](https://www.loras.dev/) / [X](https://x.com/tater_ai) / [GitHub](https://github.com/Nutlope/loras-dev), [ToolBaz](https://toolbaz.com/image/ai-image-generator), [Genspark](https://www.genspark.ai/) / [Discord](https://discord.com/invite/CsAQ6F4MPy), [AI Gallery](https://aigallery.app/) / [Telegram](https://t.me/aigalleryapp), [Seedream](https://seedream.pro/) or [Art Genie](https://artgenie.pages.dev/) - Flux Schnell * [Khoj](https://app.khoj.dev/) - Nano Banana / Imagen 4 / Reset Limits w/ Temp Mail * [⁠Coze](https://space.coze.cn/) - Seadream 4.0 / SoTA Image Gen / 50 Daily / Sign-Up with Phone # Required / US Select CA diff --git a/docs/audio.md b/docs/audio.md index 237978e83..797600975 100644 --- a/docs/audio.md +++ b/docs/audio.md @@ -29,7 +29,7 @@ * ⭐ **[YouTube Music](https://music.youtube.com/)** or [Zozoki](https://zozoki.com/music/) - YouTube Music WebUIs * ⭐ **YouTube Music Tools** - [Enhancements](https://themesong.app/), [2](https://github.com/Sv443/BetterYTM) / [Library Manager / Deleter](https://github.com/apastel/ytmusic-deleter) / [Upload Delete](https://rentry.co/tv4uo) / [Spotify Playlist Import](https://spot-transfer.vercel.app/), [2](https://github.com/mahdi-y/Spotify2YoutubeMusic), [3](https://github.com/linsomniac/spotify_to_ytmusic), [4](https://github.com/sigma67/spotify_to_ytmusic) / [Better Lyrics](https://better-lyrics.boidu.dev/) / [Discord](https://discord.gg/UsHE3d5fWF) / [GitHub](https://github.com/better-lyrics/better-lyrics) -* ⭐ **[Monochrome](https://monochrome.samidy.com/)**, [squid.wtf](https://tidal.squid.wtf) or [BiniLossless](https://music.binimum.org/) - HiFi Tidal Instances / [Full List](https://github.com/SamidyFR/monochrome/blob/main/INSTANCES.md) +* ⭐ **[Monochrome](https://monochrome.samidy.com/)** / [Legacy](https://monochrome.samidy.com/legacy/), [squid.wtf](https://tidal.squid.wtf) or [BiniLossless](https://music.binimum.org/) - HiFi Tidal Instances / [Full List](https://github.com/SamidyFR/monochrome/blob/main/INSTANCES.md) * ⭐ **[DAB Music Player](https://dabmusic.xyz/)** - Browser Music / Lossless / Sign-Up Required / [Telegram](https://t.me/+RnrXmKyOPNY0ZGY9) / [Discord](https://discord.com/invite/rmzH6ttgcC) * ⭐ **[Reddit Music Player](https://reddit.musicplayer.io/)** - Subreddit Music Player * ⭐ **[SoundCloud](https://soundcloud.com/)** - User Made Songs @@ -357,7 +357,7 @@ * ⭐ **[lucida](https://lucida.to/)** - Multi-Site / 320kb / MP3 / FLAC / [Telegram](https://t.me/lucidahasmusic) / [Discord](https://discord.com/invite/dXEGRWqEbS) * ⭐ **[squid.wtf](https://squid.wtf/)** - Amazon Music / KHInsider / Qobuz / Soundcloud / Tidal / FLAC -* ⭐ **[Monochrome](https://monochrome.samidy.com/)** - FLAC +* ⭐ **[Monochrome](https://monochrome.samidy.com/)** - FLAC / [Legacy](https://monochrome.samidy.com/legacy/) * ⭐ **[DoubleDouble](https://doubledouble.top/)** - Multi-Site / 320kb / FLAC / [Telegram](https://t.me/lucidahasmusic) * ⭐ **[DAB Music Player](https://dabmusic.xyz)**, [2](https://dabmusic.xyz/) - FLAC / Sign-Up Required / [Telegram](https://t.me/+RnrXmKyOPNY0ZGY9) / [Discord](https://discord.com/invite/rmzH6ttgcC) * [QQDL](https://tidal.qqdl.site/) or [BiniLossless](https://music.binimum.org/) - Tidal / FLAC / [Full List](https://github.com/SamidyFR/monochrome/blob/main/INSTANCES.md) @@ -980,7 +980,7 @@ * ⭐ **[Kits4Beats](https://kits4beats.com/)** - Download / Torrent / [Telegram](https://t.me/kits4beats) * ⭐ **[PLUGG SUPPLY](https://t.me/pluggsupply)** - Telegram / [VK](https://vk.com/pluggsupply) * ⭐ **[OrangeFreeSounds](https://orangefreesounds.com/)**, [FreeSoundsLibrary](https://www.freesoundslibrary.com/), [BandLab Samples](https://www.bandlab.com/sounds/free-samples) or [SoundGator](https://www.soundgator.com/) - Free-to-Use -* [EXP Soundboard](https://sourceforge.net/projects/expsoundboard/), [Sound Show](https://soundshow.app/) / [Discord](https://discord.com/invite/8pGnfJyzNq), [Soundux](https://soundux.rocks/) or [Resanance](https://resanance.com/) - Soundboard Programs +* [⁠SmoredBoard](https://www.smoredboard.com/) / [Discord](https://discord.gg/bkYY39VgQ2), [EXP Soundboard](https://sourceforge.net/projects/expsoundboard/), [Sound Show](https://soundshow.app/) / [Discord](https://discord.com/invite/8pGnfJyzNq), [Soundux](https://soundux.rocks/) or [Resanance](https://resanance.com/) - Soundboard Programs * [MyInstants](https://www.myinstants.com/index/us/), [101soundboards](https://www.101soundboards.com/) or [Soundboard.com](https://www.soundboard.com/) - Online Soundboards * [SampleBrain](https://gitlab.com/then-try-this/samplebrain), [rFXGen](https://raylibtech.itch.io/rfxgen), [Bfxr](https://www.bfxr.net/) / [GitHub](https://github.com/increpare/bfxr2), [ChipTone](https://sfbgames.itch.io/chiptone) or [SFXR](https://sfxr.me/) - Sound Effect Creators * [r/LoopKits](https://www.reddit.com/r/loopkits/), [Freesound](https://freesound.org/), [Voicy](https://www.voicy.network/), [looperman](https://www.looperman.com/loops) or [SampleSwap](https://sampleswap.org/) - User-Submitted diff --git a/docs/gaming-tools.md b/docs/gaming-tools.md index c73096cd0..00e689f54 100644 --- a/docs/gaming-tools.md +++ b/docs/gaming-tools.md @@ -756,6 +756,7 @@ * 🌐 **[Awesome Trackmania](https://github.com/EvoEsports/awesome-trackmania)** - Trackmania Resources * 🌐 **[ACNH.Directory](https://acnh.directory/)** - Animal Crossing: New Horizons Resources +* 🌐 **[Useful Osu](https://github.com/CarbonUwU/Useful-osu)** - Osu! Resources * 🌐 **[FM Scout](https://www.fmscout.com/)** - Football Manager Resources / Community * ⭐ **[Tactics.tools](https://tactics.tools/)** / [Discord](https://discord.com/invite/K4Z6shucH8) or [MetaTFT](https://www.metatft.com/) / [Discord](https://discord.com/invite/RqN3qPy) - Team Fight Tactic Guides, Stats, Tools, etc. * [Half Life Project Beta](https://hl2-beta.ru/?language=english) - Unreleased / Cut Half-Life Content @@ -771,7 +772,6 @@ * [FM Moneyball](https://www.fmdatalab.com/tutorials/moneyball) - Football Manager Recruitment Tool / [Tutorial](https://youtu.be/vBoHCH-rZMI) * [WRCsetups](https://wrcsetups.com/) - WRC Setups * [Peacock](https://thepeacockproject.org/) - Hitman World of Assassination Server Replacement / [GitHub](https://github.com/thepeacockproject/Peacock) -* [Useful Osu](https://github.com/CarbonUwU/Useful-osu) - Osu! Resources * [Collection Manager](https://github.com/Piotrekol/CollectionManager) - Osu! Collection Manager * [osu trainer](https://github.com/FunOrange/osu-trainer) - Osu! Trainer * [danser-go](https://github.com/Wieku/danser-go) - Osu! Dancing Visualizer diff --git a/docs/image-tools.md b/docs/image-tools.md index 333bee235..2886ed987 100644 --- a/docs/image-tools.md +++ b/docs/image-tools.md @@ -196,7 +196,7 @@ * [JPixel](https://pixelfromhell.itch.io/jpixel) - Pixel Art Editor * [SpookyGhost](https://encelo.itch.io/spookyghost) - Pixel Art Editor * [PixelartVillage](https://pixelartvillage.com/), [Pixel It](https://giventofly.github.io/pixelit/), [PixelartGenerator](https://pixelartgenerator.app/) or [Pixelart Converter](https://app.monopro.org/pixel/?lang=en) - Image to Pixel Art Converter / Web -* [Pixelorama](https://orama-interactive.itch.io/pixelorama) - 2D Sprite Editor / Windows, Mac, Linux, Web / [Discord](https://discord.com/invite/GTMtr8s) / [GitHub](https://github.com/Orama-Interactive/Pixelorama) +* [Pixelorama](https://pixelorama.org/) - 2D Sprite Editor / Windows, Mac, Linux, Web / [Discord](https://discord.com/invite/GTMtr8s) / [GitHub](https://github.com/Orama-Interactive/Pixelorama) * [pixeldudesmaker](https://0x72.itch.io/pixeldudesmaker) or [Creature Mixer](https://kenney.itch.io/creature-mixer) - Sprite Generator / Web * [Nasu](https://hundredrabbits.itch.io/nasu) - Spritesheet Editor / Windows, Mac, Linux, Android * [GIF to Frames](https://giftoframes.com/) - GIF to Spritesheet diff --git a/docs/internet-tools.md b/docs/internet-tools.md index 509c4cb31..d85e2e737 100644 --- a/docs/internet-tools.md +++ b/docs/internet-tools.md @@ -450,6 +450,7 @@ * [Guerrilla Mail](https://www.guerrillamail.com/) - Forever / 1 Hour / 11 Domains / [SharkLasers](https://www.sharklasers.com/) * [Bloody Vikings!](https://addons.mozilla.org/en-US/firefox/addon/bloody-vikings/) - Temp Email Extension * [Tmail.io](https://tmail.io/) - Gmail / Forever / 1 Day / 4 Domains +* [CF Temp Mail](https://em.bjedu.tech/en), [2](https://mail.awsl.uk/en) - Forever / Forever / 5 Domains / [GitHub](https://github.com/dreamhunter2333/cloudflare_temp_email/blob/main/README_EN.md) * [⁠DuckSpam](https://duckspam.com/) - Forever / Forever / 1 Domain * [⁠AltAddress](https://altaddress.org/) - Forever / 3 Days / 14 Domains * [22.Do](https://22.do/) - Gmail / 1 Day / 1 Day / 3 Domains diff --git a/docs/misc.md b/docs/misc.md index 275b6bf9d..3608b7530 100644 --- a/docs/misc.md +++ b/docs/misc.md @@ -1487,6 +1487,7 @@ * [VGA Museum](https://www.vgamuseum.info/) - Graphic Cards History * [Virus Encyclopedia](http://virus.wikidot.com/) - Computer Virus History * [MobilePhoneMuseum](https://www.mobilephonemuseum.com/) - Mobile Phone History / Info +* [WalkmanLand](https://walkman.land/) - Walkman History / Database * [KilledByGoogle](https://killedbygoogle.com/), [Microsoft Graveyard](https://microsoftgraveyard.com/) or [SuedByNintendo](https://www.suedbynintendo.com/) - Dead Projects Archives * [Projectrho](https://www.projectrho.com/public_html/rocket/) - Fantasy Rocket Encyclopedia * [EnigmaLabs](https://enigmalabs.io/) or [UFO Casebook](https://www.ufocasebook.com/) - UFO Sighting Lists / Tracking @@ -1572,7 +1573,7 @@ * 🌐 **[Websites From Hell](https://websitesfromhell.net/)** - Shitty Websites * 🌐 **[404PageFound](https://www.404pagefound.com/)** - Old Websites * ⭐ **[Neal.fun](https://neal.fun/)** - Toys / Games -* ⭐ **[Random FMHY Sites](https://ffmhy.pages.dev/archive)** - Find Random Sites Listed on FMHY / Works Per Page / [Use Button](https://i.ibb.co/xrqkVGJ/image.png), [2](https://i.imgur.com/88eNtD4.png) +* ⭐ **[Random FMHY Sites](https://ffmhy.pages.dev/)** - Find Random Sites Listed on FMHY / Works Per Page / [Use Button](https://i.ibb.co/xrqkVGJ/image.png), [2](https://i.imgur.com/88eNtD4.png) * ⭐ **[Vijay's Virtual Vibes](https://vijaysvibes.uk/)** - Find Random Sites / [iFrame Version](https://vijaysvibes.uk/iframe-version.html) * ⭐ **[Copypasta Text](https://copypastatext.com/)** - Copypasta Databases * ⭐ **[CreepyPasta](https://www.creepypasta.com/)** - Creepypasta Database diff --git a/docs/privacy.md b/docs/privacy.md index 9777b18f9..effc016ac 100644 --- a/docs/privacy.md +++ b/docs/privacy.md @@ -402,7 +402,7 @@ * ↪️ **[Free VPN Configs](https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/storage#wiki_free_vpn_configs)** * ⭐ **[VPN Binding Guide](https://wispydocs.pages.dev/torrenting/)** - Bind VPN to Torrent Client to Avoid ISP Letters * [⁠WireSock](https://wiresock.net/) or [⁠Tunnl](https://tunnl.to/) - WireGuard Split Tunneling Clients -* [WG Tunnel](https://wgtunnel.com/) - WireGuard Client / AmneziaWG / Android [Telegram](https://t.me/wgtunnel) / [GitHub](https://github.com/wgtunnel/wgtunnel) +* [WG Tunnel](https://wgtunnel.com/) - WireGuard Client / AmneziaWG / Android / [Telegram](https://t.me/wgtunnel) / [GitHub](https://github.com/wgtunnel/wgtunnel) * [VPN Hotspot](https://github.com/Mygod/VPNHotspot) - Share VPN Connection over Hotspot / Rooted Android * [Gluetun](https://github.com/qdm12/gluetun) - VPN using Docker diff --git a/docs/storage.md b/docs/storage.md index 3ef8b0fe7..2d25e1b6f 100644 --- a/docs/storage.md +++ b/docs/storage.md @@ -407,7 +407,7 @@ * ⭐ **[receive-sms](https://receive-sms.cc/)** * ⭐ **[tempsmss](https://tempsmss.com/)** -[TemporaryNumber](https://temporarynumber.com/), [Yunjisms](https://yunjisms.xyz/), [2ndline](https://www.2ndline.co/), [TextNow](https://www.textnow.com/), [GetFreeSMSNUmber](https://getfreesmsnumber.com/), [Smser](https://smser.net/), [SMS Receive](https://sms-receive.net/), [Receive SMS Online](https://www.receivesmsonline.net/), [My Trash Mobile](https://www.mytrashmobile.com/), [temp-sms](https://temp-sms.org/), [temporary-phone-number](https://temporary-phone-number.com/), [storytrain](https://www.storytrain.info/), [Temp Number](https://temp-number.com/), [receive-smss](https://receive-smss.com), [receive-sms-free](https://receive-sms-free.cc/), [quackr](https://quackr.io/), [smsnator](https://smsnator.online/), [InboxSMS](https://inboxsms.me/), [anonymsms](https://anonymsms.com/temporary-phone-number/), [receivesmsonline](https://receivesmsonline.in/), [jiemadi](https://www.jiemadi.com/en), [ReceiveSMSOnline](https://receivesmsonline.me/), [7sim](https://7sim.net/), [yunjiema](https://yunjiema.net/), [supercloudsms](https://supercloudsms.com/en), [us-phone-number](https://us-phone-number.com/), [shownumber](https://lothelper.com/en/shownumber), [yunduanxin](https://yunduanxin.net/), [bestsms](https://bestsms.xyz/), [smsget](https://smsget.net/), [free-sms-receive](https://www.free-sms-receive.com/), [free-sms-receive](https://free-sms-receive.co/), [receivefreesms](https://receivefreesms.co.uk/), [smspinverify](https://smspinverify.com/), [receivefreesms.net](https://receivefreesms.net/), [receivesmsonline](https://www.receivesmsonline.net/), [smspool](https://www.smspool.net/free-sms-verification), [receive-smss](https://receive-smss.live/) +[TemporaryNumber](https://temporarynumber.com/), [Yunjisms](https://yunjisms.xyz/), [2ndline](https://www.2ndline.co/), [TextNow](https://www.textnow.com/), [GetFreeSMSNUmber](https://getfreesmsnumber.com/), [Smser](https://smser.net/), [SMS Receive](https://sms-receive.net/), [Receive SMS Online](https://www.receivesmsonline.net/), [My Trash Mobile](https://www.mytrashmobile.com/), [temp-sms](https://temp-sms.org/), [temporary-phone-number](https://temporary-phone-number.com/), [storytrain](https://www.storytrain.info/), [Temp Number](https://temp-number.com/), [receive-smss](https://receive-smss.com), [receive-sms-free](https://receive-sms-free.cc/), [quackr](https://quackr.io/), [smsnator](https://smsnator.online/), [InboxSMS](https://inboxsms.me/), [anonymsms](https://anonymsms.com/temporary-phone-number/), [receivesmsonline](https://receivesmsonline.in/), [jiemadi](https://www.jiemadi.com/en), [ReceiveSMSOnline](https://receivesmsonline.me/), [7sim](https://7sim.net/), [yunjiema](https://yunjiema.net/), [supercloudsms](https://supercloudsms.com/en), [us-phone-number](https://us-phone-number.com/), [shownumber](https://lothelper.com/en/shownumber), [yunduanxin](https://yunduanxin.net/), [bestsms](https://bestsms.xyz/), [smsget](https://smsget.net/), [free-sms-receive](https://www.free-sms-receive.com/), [free-sms-receive](https://free-sms-receive.co/), [receivefreesms](https://receivefreesms.co.uk/), [smspinverify](https://smspinverify.com/), [receivefreesms.net](https://receivefreesms.net/), [receivesmsonline](https://www.receivesmsonline.net/), [smspool](https://www.smspool.net/free-sms-verification), [receive-smss](https://receive-smss.live/), [⁠eSIM Plus](https://esimplus.me/temporary-numbers) *** diff --git a/docs/video.md b/docs/video.md index 25058a285..56a116eb8 100644 --- a/docs/video.md +++ b/docs/video.md @@ -73,7 +73,7 @@ * ⭐ **[Flixer](https://flixer.sh)**, [Hexa](https://hexa.su/) or [Vidora](https://watch.vidora.su/) - Movies / TV / Anime / Auto-Next / [Discord](https://discord.com/invite/yvwWjqvzjE) * ⭐ **[Filmex](https://filmex.to/)** - Movies / TV / Anime / Auto-Next / [Discord](https://discord.com/invite/WWrWnG8qmh) * ⭐ **[Cinezo](https://www.cinezo.net/)** or [Yenime](https://yenime.net/) - Movies / TV / Anime / Auto-Next / [Discord](https://discord.gg/Gx27YMK73d) -* ⭐ **[Vidbox](https://vidbox.cc/)**, [2](https://cinehd.cc/), [3](https://hotflix.to/) - Movies / TV / Anime / Auto-Next / [Discord](https://discord.gg/VGQKGPM9Ej)g +* ⭐ **[Vidbox](https://vidbox.cc/)**, [2](https://cinehd.cc/), [3](https://hotflix.to/) - Movies / TV / Anime / Auto-Next / [Discord](https://discord.gg/VGQKGPM9Ej) * ⭐ **[Willow](https://willow.arlen.icu/)**, [2](https://salix.pages.dev/) - Movies / TV / Anime / [4K Guide](https://rentry.co/willow-guide) / [Telegram](https://t.me/+8OiKICptQwA4YTJk) / [Discord](https://discord.com/invite/gmXvwcmxWR) * ⭐ **[BEECH](https://www.beech.watch/)** or [bCine](https://bcine.app/) - Movies / TV / Anime / Auto-Next / [Discord](https://discord.gg/FekgaSAtJa) * ⭐ **[CinemaOS](https://cinemaos.live/)**, [2](https://cinemaos.tech/), [3](https://cinemaos.me/) - Movies / TV / Anime / Auto-Next / [Discord](https://discord.gg/38yFnFCJnA) @@ -208,7 +208,7 @@ * [TVARK](https://tvark.org/) or [Daily Commercials](https://dailycommercials.com/) - Commercial / TV Promo Archives * [BMCC](https://www.youtube.com/@BMCC1967/) or [MovieCommentaries](https://www.youtube.com/@moviecommentaries) - Movie / TV Director Commentaries * [SpecialFeatureArchive](https://youtube.com/@specialfeaturesarchive) - DVD Extras / Special Features -* [DPAN](https://dpan.tv/), [Deaffest](https://deaffestonlinecinema.eventive.org/) (signup) or [Lumo TV](https://lumotv.co.uk/) - Deaf Entertainment / News +* [DPAN](https://dpan.tv/), [Deaffest](https://deaffestonlinecinema.eventive.org/) (signup), [DMDb](https://deafmovie.org/free/) or [Lumo TV](https://lumotv.co.uk/) - Deaf Entertainment / News * [Audiovault](https://audiovault.net/) - Descriptive Audio for Blind Users *** @@ -232,7 +232,7 @@ * [123anime](https://123animes.ru/) - Sub / Dub / Auto-Next * [AniBite](https://anibite.cc/) - Sub / Dub / [Telegram](https://t.me/+8Wluy50R049kMmVk) / [Discord](https://discord.com/invite/V5AWy78VTv) * [Kuudere](https://kuudere.to/), [2](https://kuudere.ru/) - Sub / Dub / Auto-Next / [Telegram](https://t.me/kuudere0to) / [Discord](https://discord.gg/h9v9Vfzp7B) -* [Gojo](https://animetsu.to/), [2](https://animetsu.cc/) - Sub / Dub +* [Gojo](https://animetsu.net/) - Sub / Dub * [⁠AnimeZ](https://animeyy.com/) - Sub / Dub * [⁠JustAnime](https://justanime.to/) - Sub / Dub / Auto-Next / [Discord](https://discord.gg/P3yqksmGun) * [⁠AniKuro](https://anikuro.to/), [2](https://anikuro.ru/) - Sub / Dub / [Status](https://anikuro.site/) / [Telegram](https://t.me/+DrD7eAO7R69mZGM0) / [Discord](https://discord.com/invite/Svc9yFjQBq) @@ -856,6 +856,7 @@ * [CageMatch](https://www.cagematch.net/) - Wrestling Promotion Database * [What's on Netflix](https://www.whats-on-netflix.com/), [uNoGS](https://unogs.com/) or [FlixWatch](https://www.flixwatch.co/) - Browse Netflix Library * [Netflix Top 10](https://www.netflix.com/tudum/top10) - Netflix Most-Watched Chart +* [DMDb](https://deafmovie.org/) or [Sign on Screen](https://signonscreen.com/all-films/) - Deaf Movie Databases / Sign Language Films / Deaf Actors * [MediaTracker](https://github.com/bonukai/MediaTracker) or [Yamtrack](https://github.com/FuzzyGrim/Yamtrack) - Self-Hosted Media Trackers *** From 7719ec64806ce585ff369bbfa11533a8f7cebf24 Mon Sep 17 00:00:00 2001 From: nbats <44333466+nbats@users.noreply.github.com> Date: Fri, 2 Jan 2026 04:55:10 -0800 Subject: [PATCH 2/9] Re-added the alt FMHY frontend, without over-the-top homepage this time --- docs/other/backups.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/other/backups.md b/docs/other/backups.md index 0088f851a..026e005bd 100644 --- a/docs/other/backups.md +++ b/docs/other/backups.md @@ -16,13 +16,14 @@ Official website, mirrors, GitHub, markdown, and a selfhosting guide. Verified instances that mirror the official FMHY [repository](https://github.com/fmhy/edit). +* [FMHY Archive](https://ffmhy.pages.dev/) - Alternative Style * [fmhy.bid](https://fmhy.bid/) * [fmhy.samidy.com](https://fmhy.samidy.com/) * [fmhy.jbugel.xyz](https://fmhy.jbugel.xyz/) * [a-fmhy](https://a-fmhy.pages.dev/) / [GitHub](https://github.com/LandWarderer2772/A-FMHY) * [fmhy.artistgrid.cx](https://fmhy.artistgrid.cx/) (Mirrors: [2](https://fmhy.artistgrid.pp.ua/)/[3](https://fmhy.blooketbot.me/)/[4](https://fmhy.joyconlab.net/)/[5](https://fmhy.monochrome.tf/)/[6](https://fmhy.piperagossip.org/)/[7](https://fmhy.pp.ua/)/[8](https://fmhy.prigoana.com/)/[9](https://fmhy.prigoana.pp.ua/)) * [fmhy.xyz](https://fmhy.xyz/) - Safe for Work (no nsfw page) -* [fmhy.vercel.app](https://fmhy.vercel.app/) - Original Version +* [fmhy.vercel.app](https://fmhy.vercel.app/) - Original Style *** @@ -41,4 +42,4 @@ Official mirrors and alternative ways to view FMHY. **Backup Page Backups** -[FMHY.net](https://fmhy.net/other/backups) / [Reddit](https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/backups) / [GitHub](https://github.com/nbats/FMHY/wiki/Backups/) / [Rentry](https://rentry.co/FMHYbackups/) \ No newline at end of file +[FMHY.net](https://fmhy.net/other/backups) / [Reddit](https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/backups) / [GitHub](https://github.com/nbats/FMHY/wiki/Backups/) / [Rentry](https://rentry.co/FMHYbackups/) From 9e57d11f79c8a56a3d9b925616334349adf0293a Mon Sep 17 00:00:00 2001 From: nbats <44333466+nbats@users.noreply.github.com> Date: Fri, 2 Jan 2026 04:59:28 -0800 Subject: [PATCH 3/9] Update jan-2026.md --- docs/posts/jan-2026.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/posts/jan-2026.md b/docs/posts/jan-2026.md index 54ba78d78..35b4ee5d3 100644 --- a/docs/posts/jan-2026.md +++ b/docs/posts/jan-2026.md @@ -20,6 +20,8 @@ in seeing all minor changes you can follow our # Wiki Updates +- Added **[Alternative Frontend](https://ffmhy.pages.dev/)** of FMHY with totally different design. This pulls from the official source, so it will stay synced with new edits. It also has a [random site](https://i.ibb.co/fVkHqhRP/image.png) / [2](https://i.imgur.com/p4Mxs8y.png) button that works per page. Note the front-page for this has been removed, and it now directs to the wiki itself. Thank you to nw for making this. + - Added **[3 New Instances](https://fmhy.net/other/backups)** to our Backups Page. (Samidy, JBugel, ArtistGrid.) - Added **[Catppuccin](https://i.ibb.co/Ps8vDJL0/image.png)** / [2](https://i.imgur.com/558l4gH.png) as a option in our color picker. Thank you to Samidy for doing this. From 57ef8769a2d1b0c7125e14e4bceb6e72fef9ad40 Mon Sep 17 00:00:00 2001 From: nbats <44333466+nbats@users.noreply.github.com> Date: Fri, 2 Jan 2026 05:03:40 -0800 Subject: [PATCH 4/9] Fix typo --- docs/posts/jan-2026.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/posts/jan-2026.md b/docs/posts/jan-2026.md index 35b4ee5d3..4f3fa3ec3 100644 --- a/docs/posts/jan-2026.md +++ b/docs/posts/jan-2026.md @@ -20,7 +20,7 @@ in seeing all minor changes you can follow our # Wiki Updates -- Added **[Alternative Frontend](https://ffmhy.pages.dev/)** of FMHY with totally different design. This pulls from the official source, so it will stay synced with new edits. It also has a [random site](https://i.ibb.co/fVkHqhRP/image.png) / [2](https://i.imgur.com/p4Mxs8y.png) button that works per page. Note the front-page for this has been removed, and it now directs to the wiki itself. Thank you to nw for making this. +- Added **[Alternative Frontend](https://ffmhy.pages.dev/)** of FMHY with totally different design. This pulls from the official source, so it will stay synced with new edits. It also has a [random site](https://i.ibb.co/fVkHqhRP/image.png) / [2](https://i.imgur.com/p4Mxs8y.png) button that works per page. Note the front page for this has been removed, and it now directs to the wiki itself. Thank you to nw for making this. - Added **[3 New Instances](https://fmhy.net/other/backups)** to our Backups Page. (Samidy, JBugel, ArtistGrid.) From 908a1d8ce41e94f222008edf470bcaf38eddc463 Mon Sep 17 00:00:00 2001 From: fmhyhalloweenshit Date: Fri, 2 Jan 2026 16:07:08 +0300 Subject: [PATCH 5/9] Fix theme issues (#4527) * thr33 * super safe * i dont like addings messages atp * eardrummer * trial and error again * kill everyone * PLEASE BRAH * . --- .../theme/components/ColorPicker.vue | 2 +- docs/.vitepress/theme/themes/themeHandler.ts | 272 +++++++++++------- docs/.vitepress/theme/themes/types.ts | 2 +- 3 files changed, 172 insertions(+), 104 deletions(-) diff --git a/docs/.vitepress/theme/components/ColorPicker.vue b/docs/.vitepress/theme/components/ColorPicker.vue index cce2ef535..607043b75 100644 --- a/docs/.vitepress/theme/components/ColorPicker.vue +++ b/docs/.vitepress/theme/components/ColorPicker.vue @@ -8,7 +8,7 @@ import type { Theme } from '../themes/types' import Switch from './Switch.vue' type ColorNames = keyof typeof colors -const selectedColor = useStorage('preferred-color', 'christmas') +const selectedColor = useStorage('preferred-color', 'swarm') // Use the theme system const { amoledEnabled, setAmoledEnabled, setTheme, state, mode, themeName } = useTheme() diff --git a/docs/.vitepress/theme/themes/themeHandler.ts b/docs/.vitepress/theme/themes/themeHandler.ts index e68db2a7b..9016cec48 100644 --- a/docs/.vitepress/theme/themes/themeHandler.ts +++ b/docs/.vitepress/theme/themes/themeHandler.ts @@ -29,67 +29,45 @@ export class ThemeHandler { theme: null }) private amoledEnabled = ref(false) - - private initTime = 0 constructor() { - if (typeof window !== 'undefined') { - this.initTime = Date.now() - } this.initializeTheme() } private initializeTheme() { if (typeof window === 'undefined') return + // Load saved preferences const savedTheme = localStorage.getItem(STORAGE_KEY_THEME) || 'color-swarm' const savedMode = localStorage.getItem(STORAGE_KEY_MODE) as DisplayMode | null const savedAmoled = localStorage.getItem(STORAGE_KEY_AMOLED) === 'true' - if (!localStorage.getItem(STORAGE_KEY_THEME)) { - localStorage.setItem(STORAGE_KEY_THEME, 'color-swarm') - } - if (!localStorage.getItem('preferred-color')) { - localStorage.setItem('preferred-color', 'swarm') - } - - console.log('[ThemeHandler] Initializing. Raw Storage:', savedTheme) - if (themeRegistry[savedTheme]) { - console.log('[ThemeHandler] Found Custom Theme:', savedTheme) this.state.value.currentTheme = savedTheme this.state.value.theme = themeRegistry[savedTheme] - } - else if (themeRegistry[savedTheme.replace('color-', '')]) { - const cleanName = savedTheme.replace('color-', '') - console.log('[ThemeHandler] Found Custom Theme (cleaned):', cleanName) - this.state.value.currentTheme = cleanName - this.state.value.theme = themeRegistry[cleanName] - } - else { - const cleanName = savedTheme.replace('color-', '') - console.log('[ThemeHandler] Using Preset Theme:', cleanName) - this.state.value.currentTheme = cleanName - this.state.value.theme = null } + // Set amoled preference this.amoledEnabled.value = savedAmoled - + // Set mode if (savedMode) { this.state.value.currentMode = savedMode } else { + // Detect system preference for initial mode const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches this.state.value.currentMode = prefersDark ? 'dark' : 'light' } this.applyTheme() + // Listen for system theme changes (only if user hasn't set a preference) window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => { if (!localStorage.getItem(STORAGE_KEY_MODE)) { this.state.value.currentMode = e.matches ? 'dark' : 'light' this.applyTheme() - } else { + } + else { this.applyTheme() } }) @@ -99,44 +77,53 @@ export class ThemeHandler { if (typeof document === 'undefined') return const { currentMode, theme } = this.state.value - - if (!theme || !theme.modes || !theme.modes[currentMode]) { - this.applyDOMClasses(currentMode) - this.clearCustomCSSVariables() - return - } - + + // Is this the WORST fix of all time??? + const root = document.documentElement + const bgColor = currentMode === 'dark' && this.amoledEnabled.value ? '#000000' : currentMode === 'dark' ? '#1A1A1A' : '#f8fafc' + root.style.setProperty('--vp-c-bg', bgColor) + const bgAltColor = currentMode === 'dark' && this.amoledEnabled.value ? '#000000' : currentMode === 'dark' ? '#171717' : '#eef2f5' + root.style.setProperty('--vp-c-bg-alt', bgAltColor) + const bgElvColor = currentMode === 'dark' && this.amoledEnabled.value ? 'rgba(0, 0, 0, 0.9)' : currentMode === 'dark' ? '#1a1a1acc' : 'rgba(255, 255, 255, 0.8)' + root.style.setProperty('--vp-c-bg-elv', bgElvColor) + + this.applyDOMClasses(currentMode) + + if (!theme) return + const modeColors = theme.modes[currentMode] + this.applyDOMClasses(currentMode) this.applyCSSVariables(modeColors, theme) } private applyDOMClasses(mode: DisplayMode) { const root = document.documentElement + + // Remove all mode classes root.classList.remove('dark', 'light', 'amoled') + + // Add current mode class root.classList.add(mode) + + // Add amoled class if enabled in dark mode if (mode === 'dark' && this.amoledEnabled.value) { root.classList.add('amoled') } } - private clearCustomCSSVariables() { - if (typeof document === 'undefined') return - const root = document.documentElement - const allStyleProps = Array.from(root.style) - allStyleProps.forEach(prop => { - if (prop.startsWith('--vp-')) { - root.style.removeProperty(prop) - } - }) - } - private applyCSSVariables(colors: ModeColors, theme: Theme) { if (typeof document === 'undefined') return const root = document.documentElement - this.clearCustomCSSVariables() + // Clear ALL inline styles related to theming to ensure clean slate + const allStyleProps = Array.from(root.style) + allStyleProps.forEach(prop => { + if (prop.startsWith('--vp-')) { + root.style.removeProperty(prop) + } + }) let bgColor = colors.bg let bgAltColor = colors.bgAlt let bgElvColor = colors.bgElv @@ -147,13 +134,22 @@ export class ThemeHandler { bgElvColor = 'rgba(0, 0, 0, 0.9)' } + // Apply brand colors only if theme specifies them + // Otherwise, remove inline styles to let ColorPicker CSS take effect if (colors.brand && (colors.brand[1] || colors.brand[2] || colors.brand[3] || colors.brand.soft)) { if (colors.brand[1]) root.style.setProperty('--vp-c-brand-1', colors.brand[1]) if (colors.brand[2]) root.style.setProperty('--vp-c-brand-2', colors.brand[2]) if (colors.brand[3]) root.style.setProperty('--vp-c-brand-3', colors.brand[3]) if (colors.brand.soft) root.style.setProperty('--vp-c-brand-soft', colors.brand.soft) + } else { + // Remove inline brand color styles so ColorPicker CSS can apply + root.style.removeProperty('--vp-c-brand-1') + root.style.removeProperty('--vp-c-brand-2') + root.style.removeProperty('--vp-c-brand-3') + root.style.removeProperty('--vp-c-brand-soft') } + // Apply background colors root.style.setProperty('--vp-c-bg', bgColor) root.style.setProperty('--vp-c-bg-alt', bgAltColor) root.style.setProperty('--vp-c-bg-elv', bgElvColor) @@ -161,12 +157,34 @@ export class ThemeHandler { root.style.setProperty('--vp-c-bg-mark', colors.bgMark) } + // Apply text colors - always set them to ensure proper theme switching if (colors.text) { if (colors.text[1]) root.style.setProperty('--vp-c-text-1', colors.text[1]) if (colors.text[2]) root.style.setProperty('--vp-c-text-2', colors.text[2]) if (colors.text[3]) root.style.setProperty('--vp-c-text-3', colors.text[3]) + } else { + // Remove inline styles if theme doesn't specify text colors + // This allows CSS variables from style.scss to take effect + root.style.removeProperty('--vp-c-text-1') + root.style.removeProperty('--vp-c-text-2') + root.style.removeProperty('--vp-c-text-3') } + // Debug: log applied text color variables so we can inspect in console + try { + // eslint-disable-next-line no-console + console.log('[ThemeHandler] applied text vars', { + theme: theme.name, + mode: this.state.value.currentMode, + vp_text_1: root.style.getPropertyValue('--vp-c-text-1'), + vp_text_2: root.style.getPropertyValue('--vp-c-text-2'), + vp_text_3: root.style.getPropertyValue('--vp-c-text-3') + }) + } catch (e) { + // ignore + } + + // Apply button colors root.style.setProperty('--vp-button-brand-bg', colors.button.brand.bg) root.style.setProperty('--vp-button-brand-border', colors.button.brand.border) root.style.setProperty('--vp-button-brand-text', colors.button.brand.text) @@ -181,6 +199,7 @@ export class ThemeHandler { root.style.setProperty('--vp-button-alt-hover-bg', colors.button.alt.hoverBg) root.style.setProperty('--vp-button-alt-hover-text', colors.button.alt.hoverText) + // Apply custom block colors const blocks = ['info', 'tip', 'warning', 'danger'] as const blocks.forEach((block) => { const blockColors = colors.customBlock[block] @@ -190,69 +209,84 @@ export class ThemeHandler { root.style.setProperty(`--vp-custom-block-${block}-text-deep`, blockColors.textDeep) }) + // Apply selection color root.style.setProperty('--vp-c-selection-bg', colors.selection.bg) + // Apply home hero colors (if defined) if (colors.home) { root.style.setProperty('--vp-home-hero-name-color', colors.home.heroNameColor) root.style.setProperty('--vp-home-hero-name-background', colors.home.heroNameBackground) root.style.setProperty('--vp-home-hero-image-background-image', colors.home.heroImageBackground) root.style.setProperty('--vp-home-hero-image-filter', colors.home.heroImageFilter) + } else { + // Remove home hero color styles if theme doesn't specify them + root.style.removeProperty('--vp-home-hero-name-color') + root.style.removeProperty('--vp-home-hero-name-background') + root.style.removeProperty('--vp-home-hero-image-background-image') + root.style.removeProperty('--vp-home-hero-image-filter') } - if (theme.fonts?.body) root.style.setProperty('--vp-font-family-base', theme.fonts.body) - if (theme.fonts?.heading) root.style.setProperty('--vp-font-family-heading', theme.fonts.heading) - if (theme.borderRadius) root.style.setProperty('--vp-border-radius', theme.borderRadius) + // Apply fonts (if defined) + if (theme.fonts?.body) { + root.style.setProperty('--vp-font-family-base', theme.fonts.body) + } else { + root.style.removeProperty('--vp-font-family-base') + } + if (theme.fonts?.heading) { + root.style.setProperty('--vp-font-family-heading', theme.fonts.heading) + } else { + root.style.removeProperty('--vp-font-family-heading') + } + + // Apply border radius (if defined) + if (theme.borderRadius) { + root.style.setProperty('--vp-border-radius', theme.borderRadius) + } else { + root.style.removeProperty('--vp-border-radius') + } + + // Apply spacing (if defined) if (theme.spacing) { if (theme.spacing.small) root.style.setProperty('--vp-spacing-small', theme.spacing.small) + else root.style.removeProperty('--vp-spacing-small') if (theme.spacing.medium) root.style.setProperty('--vp-spacing-medium', theme.spacing.medium) + else root.style.removeProperty('--vp-spacing-medium') if (theme.spacing.large) root.style.setProperty('--vp-spacing-large', theme.spacing.large) + else root.style.removeProperty('--vp-spacing-large') + } else { + root.style.removeProperty('--vp-spacing-small') + root.style.removeProperty('--vp-spacing-medium') + root.style.removeProperty('--vp-spacing-large') } + + // Apply custom properties (if defined) if (theme.customProperties) { - Object.entries(theme.customProperties).forEach(([key, value]) => root.style.setProperty(key, value)) + Object.entries(theme.customProperties).forEach(([key, value]) => { + root.style.setProperty(key, value) + }) + } + + // Apply custom logo (if defined) + if (theme.logo) { + root.style.setProperty('--vp-theme-logo', `url(${theme.logo})`) + } else { + root.style.removeProperty('--vp-theme-logo') } - if (theme.logo) root.style.setProperty('--vp-theme-logo', `url(${theme.logo})`) } public setTheme(themeName: string) { - console.log('[ThemeHandler] setTheme called with:', themeName) - - - const isStartup = typeof window !== 'undefined' && (Date.now() - this.initTime < 1000) - const isDefaultReset = themeName === 'color-swarm' || themeName === 'swarm' - const hasCustomThemeLoaded = !!this.state.value.theme - - if (isStartup && isDefaultReset && hasCustomThemeLoaded) { - console.warn('[ThemeHandler] Blocked auto-reset to default theme during startup.') - return + if (!themeRegistry[themeName]) { + console.warn(`Theme "${themeName}" not found. Using christmas theme.`) + themeName = 'christmas' } - if (themeRegistry[themeName]) { - this.state.value.currentTheme = themeName - this.state.value.theme = themeRegistry[themeName] - localStorage.setItem(STORAGE_KEY_THEME, themeName) - this.applyTheme() - this.ensureColorPickerColors() - return - } - - const cleanName = themeName.replace('color-', '') - if (themeRegistry[cleanName]) { - this.state.value.currentTheme = cleanName - this.state.value.theme = themeRegistry[cleanName] - localStorage.setItem(STORAGE_KEY_THEME, cleanName) - this.applyTheme() - this.ensureColorPickerColors() - return - } - - console.log('[ThemeHandler] Applying Preset:', cleanName) - this.state.value.currentTheme = cleanName - this.state.value.theme = null - - localStorage.setItem(STORAGE_KEY_THEME, `color-${cleanName}`) - localStorage.setItem('preferred-color', cleanName) - + this.state.value.currentTheme = themeName + this.state.value.theme = themeRegistry[themeName] + localStorage.setItem(STORAGE_KEY_THEME, themeName) this.applyTheme() + + // Force re-apply ColorPicker colors if theme doesn't specify brand colors + this.ensureColorPickerColors() } public setMode(mode: DisplayMode) { @@ -263,7 +297,10 @@ export class ThemeHandler { public toggleMode() { const currentMode = this.state.value.currentMode + + // Toggle between light and dark const newMode: DisplayMode = currentMode === 'light' ? 'dark' : 'light' + this.setMode(newMode) } @@ -273,38 +310,67 @@ export class ThemeHandler { this.applyTheme() } - public getAmoledEnabled() { return this.amoledEnabled.value } - public toggleAmoled() { this.setAmoledEnabled(!this.amoledEnabled.value) } - public getAmoledEnabledRef() { return this.amoledEnabled } + public getAmoledEnabled() { + return this.amoledEnabled.value + } + + public toggleAmoled() { + this.setAmoledEnabled(!this.amoledEnabled.value) + } + + public getAmoledEnabledRef() { + return this.amoledEnabled + } private ensureColorPickerColors() { - const currentMode = this.state.value.currentMode const theme = this.state.value.theme - - if (!theme || !theme.modes || !theme.modes[currentMode]) return + if (!theme) return + // If theme doesn't specify brand colors, force ColorPicker to reapply its selection + const currentMode = this.state.value.currentMode const modeColors = theme.modes[currentMode] - + if (!modeColors.brand || !modeColors.brand[1]) { + // Trigger a custom event that ColorPicker can listen to if (typeof window !== 'undefined') { window.dispatchEvent(new CustomEvent('theme-changed-apply-colors')) } } } - public getState() { return this.state } - public getMode() { return this.state.value.currentMode } - public getTheme() { return this.state.value.currentTheme } - public getCurrentTheme() { return this.state.value.theme || ({} as Theme) } + public getState() { + return this.state + } + + public getMode() { + return this.state.value.currentMode + } + + public getTheme() { + return this.state.value.currentTheme + } + + public getCurrentTheme() { + return this.state.value.theme + } + public getAvailableThemes() { return Object.keys(themeRegistry).map(key => ({ name: key, displayName: themeRegistry[key].displayName })) } - public isDarkMode() { return this.state.value.currentMode === 'dark' } - public isAmoledMode() { return this.state.value.currentMode === 'dark' && this.amoledEnabled.value } + + public isDarkMode() { + const mode = this.state.value.currentMode + return mode === 'dark' + } + + public isAmoledMode() { + return this.state.value.currentMode === 'dark' && this.amoledEnabled.value + } } +// Global theme handler instance let themeHandlerInstance: ThemeHandler | null = null export function useThemeHandler() { @@ -314,11 +380,13 @@ export function useThemeHandler() { return themeHandlerInstance } +// Composable for use in Vue components export function useTheme() { const handler = useThemeHandler() const state = handler.getState() onMounted(() => { + // Ensure theme is applied on mount handler.applyTheme() }) diff --git a/docs/.vitepress/theme/themes/types.ts b/docs/.vitepress/theme/themes/types.ts index cc997412c..de54fa80a 100644 --- a/docs/.vitepress/theme/themes/types.ts +++ b/docs/.vitepress/theme/themes/types.ts @@ -130,5 +130,5 @@ export interface ThemeRegistry { export interface ThemeState { currentTheme: string currentMode: DisplayMode - theme: Theme + theme: Theme | null } From 56329f8bf05e790d4dcc3fd47718ff9ad163e3c6 Mon Sep 17 00:00:00 2001 From: DoThingsWithAI Date: Fri, 2 Jan 2026 21:15:58 +0800 Subject: [PATCH 6/9] update Open Bulk URL link due to 301 redirect (#4433) Co-authored-by: shan <2302531309@qq.com> --- docs/internet-tools.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/internet-tools.md b/docs/internet-tools.md index d85e2e737..7d30f254c 100644 --- a/docs/internet-tools.md +++ b/docs/internet-tools.md @@ -316,7 +316,7 @@ * ⭐ **[lychee](https://lychee.cli.rs/)** - URL Scanner / [GitHub](https://github.com/lycheeverse/lychee/) * [ChangeDetection.io](https://github.com/dgtlmoon/changedetection.io), [urlwatch](https://thp.io/2008/urlwatch/), [Visualping](https://visualping.io/), [Changd](https://github.com/paschmann/changd) or [Follow That Page](https://www.followthatpage.com/) - Page Change Detection / Notification * [Linkify Plus Plus](https://greasyfork.org/scripts/4255) - Turn Plain Text URLs Into Links -* [Open Bulk URL](https://openbulkurl.com/), [Open URL](https://openurl.online/) or [OpenAllURLs](https://www.openallurls.com/) - Bulk Open URLs +* [Open Bulk URL](https://openbulkurl.com/), [Multiple Link Opener](https://urltoolshub.com/multiple-link-opener/) or [OpenAllURLs](https://www.openallurls.com/) - Bulk Open URLs * [Link Lock](https://rekulous.github.io/link-lock/) - Encrypt & Decrypt Links with Passwords * [scrt.link](https://scrt.link/) or [Temporary URL](https://www.temporary-url.com/) - Temporary Single-Use Links * [W.A.R. Links Checker Premium](https://greasyfork.org/en/scripts/2024) - File Host Link Auto-Check From f89bf55ab030dc18e2efa819659f0b9e646b0458 Mon Sep 17 00:00:00 2001 From: nbats <44333466+nbats@users.noreply.github.com> Date: Fri, 2 Jan 2026 05:26:28 -0800 Subject: [PATCH 7/9] split DLPSGame sub-sites into sections they belong --- docs/gaming.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/gaming.md b/docs/gaming.md index da2c785fd..f9dca84a6 100644 --- a/docs/gaming.md +++ b/docs/gaming.md @@ -317,7 +317,6 @@ * [FinalBurn Neo](https://rentry.co/FMHYB64#finalburn-neo) - ROMs / Zip * [Romsie](https://roms2000.com/) - ROMs * [Retrostic](https://www.retrostic.com/) - ROMs -* [DLPSGame](https://dlpsgame.com/), [2](https://nswgame.com) - ROMs / Avoid PC Games * [ROMsGames](https://www.romsgames.net/roms/) - ROMs * [ConsoleROMs](https://www.consoleROMs.com/) - ROMs * [ROMsHQ](https://romshq.com/) - ROMs @@ -336,6 +335,7 @@ * [NGR](https://www.nextgenroms.com/) - ROMs / [Discord](https://discord.gg/BQPzkwj) * [FantasyAnime](https://fantasyanime.com/) - ROMs * [Rom Magnet Links](https://emulation.gametechwiki.com/index.php/ROM_%26_ISO_Sites#BitTorrent) - ROMs / Torrent +* [DLXbGame](https://dlxbgame.com/) - ROMs / Xbox 360 * [ROM CSE](https://cse.google.com/cse?cx=f47f68e49301a07ac) / [CSE 2](https://cse.google.com/cse?cx=744926a50bd7eb010) - Multi-Site ROM Search * [Wad Archive](https://archive.org/details/wadarchive) - 83k WAD Files * [Cah4e3](https://cah4e3.shedevr.org.ru/) - Unlicensed ROMs / Bootlegs / Use [Translator](https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/text-tools/#wiki_.25B7_translators) @@ -359,6 +359,7 @@ * [64DD.org](https://64dd.org/) - ROMs / 64DD * [NXBrew](https://nxbrew.net/) - ROMs / Switch * [SwitchGamesMall](https://switchgamesmall.icu/) - ROMs / Switch / DDL / Torrents / [Discord](https://discord.gg/rgttByzYRY) +* [NSWGame](https://nswgame.com/) - ROMs / DS / 3DS / Switch / Wii / WiiU / Avoid PC Games * [notUltraNX](https://not.ultranx.ru/en) - ROMs / Switch / Sign-Up Required * [ROMSim](https://romsim.com/) - ROMs / Switch / [Discord](https://discord.gg/Zgdhq7xDcd) * [ROMSLAB](https://romslab.com/) - ROMs / Switch @@ -392,9 +393,11 @@ * ⭐ **[NoPayStation](https://nopaystation.com/)** - ROMs / PS3 / PSP / PSVita / [Discord](https://discord.com/invite/rNGrkUY) * ⭐ **[PSVitaVPK](https://psvitavpk.com/)** - ROMs / PSVita * [AlvRo](https://rentry.co/FMHYB64#alvro) - ROMs / PS2 / PW: `ByAlvRo` +* [DLPSGame](https://dlpsgame.com/) - ROMs / PS2 / PS3 / PS4 / PS5 / Avoid PC Games * [PKGPS4](https://www.pkgps4.click/) - ROMs / PS4 * [PS3R](https://ps3r.com/) - ROMs / PS3 * [PSXROMs](https://psxroms.pro/) - ROMs / PS2 / PSP +* [DownloadGamePSP](https://downloadgamepsp.org/) - ROMs / PSP / PSVita / Avoid PC Games * [PS1 Covers](https://github.com/xlenore/psx-covers) or [PS2 Covers](https://github.com/xlenore/ps2-covers) - Cover Downloaders *** From 5cb9aa242e5084d94a83078b1508b1ae5f4f0d61 Mon Sep 17 00:00:00 2001 From: nbats <44333466+nbats@users.noreply.github.com> Date: Fri, 2 Jan 2026 05:34:38 -0800 Subject: [PATCH 8/9] small update --- docs/gaming.md | 2 +- docs/video.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/gaming.md b/docs/gaming.md index f9dca84a6..5875abe74 100644 --- a/docs/gaming.md +++ b/docs/gaming.md @@ -335,7 +335,7 @@ * [NGR](https://www.nextgenroms.com/) - ROMs / [Discord](https://discord.gg/BQPzkwj) * [FantasyAnime](https://fantasyanime.com/) - ROMs * [Rom Magnet Links](https://emulation.gametechwiki.com/index.php/ROM_%26_ISO_Sites#BitTorrent) - ROMs / Torrent -* [DLXbGame](https://dlxbgame.com/) - ROMs / Xbox 360 +* [DLXbGame](https://dlxbgame.com/) - ROMs / Xbox 360 / Avoid PC Games * [ROM CSE](https://cse.google.com/cse?cx=f47f68e49301a07ac) / [CSE 2](https://cse.google.com/cse?cx=744926a50bd7eb010) - Multi-Site ROM Search * [Wad Archive](https://archive.org/details/wadarchive) - 83k WAD Files * [Cah4e3](https://cah4e3.shedevr.org.ru/) - Unlicensed ROMs / Bootlegs / Use [Translator](https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/text-tools/#wiki_.25B7_translators) diff --git a/docs/video.md b/docs/video.md index 56a116eb8..b0e7ae953 100644 --- a/docs/video.md +++ b/docs/video.md @@ -381,7 +381,7 @@ ## ▷ Live TV -* ⭐ **[tv.garden](https://tv.garden/)** - TV / Sports +* ⭐ **[Famelack](https://famelack.com/)** - TV / Sports * ⭐ **[PlayTorrio IPTV](https://playtorrioiptv.pages.dev/)** / [Discord](https://discord.gg/bbkVHRHnRk) / [GitHub](https://github.com/ayman708-UX/PlayTorrio) or [Darkness TV](https://tv-channels.pages.dev/) / [GitHub](https://github.com/DarknessShade/TV) - TV / Sports * ⭐ **[NTV](https://ntvstream.cx/)** - TV / Sports / Aggregator / [Telegram](https://t.me/ntvsteam) / [Discord](https://discord.gg/uY3ud5gcpW) * ⭐ **[EasyWebTV](https://zhangboheng.github.io/Easy-Web-TV-M3u8/routes/countries.html)** or [IPTV Web](https://iptv-web.app/) - TV / Sports From 578fb35f0ea2d23e734aa4dcb0d81d4301d14203 Mon Sep 17 00:00:00 2001 From: nbats <44333466+nbats@users.noreply.github.com> Date: Fri, 2 Jan 2026 05:53:24 -0800 Subject: [PATCH 9/9] fix --- docs/gaming-tools.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/gaming-tools.md b/docs/gaming-tools.md index 00e689f54..07f3772e0 100644 --- a/docs/gaming-tools.md +++ b/docs/gaming-tools.md @@ -635,7 +635,7 @@ * ⭐ **[Prism Launcher](https://prismlauncher.org/)** - Feature-Rich Launcher / [CurseForge Downloads](https://gist.github.com/sugoidogo/2e607727cd61324b2d292da96961de3f) / [Free Version](https://rentry.co/FMHYB64#prism) * ⭐ **[ATLauncher](https://atlauncher.com/)** / [Discord](https://discord.com/invite/B7TrrzH) or [Technic Launcher](https://www.technicpack.net/) / [Discord](https://discord.com/invite/technic) - Modpack Launchers * ⭐ **[Bedrock Launcher](https://bedrocklauncher.github.io/)** - Launcher for Bedrock Edition / [Does Not Work w/ Latest MC Versions](https://ibb.co/7NXBJXX5) -[ElyPrismLauncher](https://github.com/ElyPrismLauncher/ElyPrismLauncher) / [Discord](https://discord.com/invite/ArX2nafFz2) / [GitHub](https://github.com/PrismLauncher/PrismLauncher) or [⁠FjordLauncher](https://github.com/unmojang/FjordLauncher) - Prism Launcher Forks w/ Alt Auth Server Support +* [ElyPrismLauncher](https://github.com/ElyPrismLauncher/ElyPrismLauncher) / [Discord](https://discord.com/invite/ArX2nafFz2) / [GitHub](https://github.com/PrismLauncher/PrismLauncher) or [⁠FjordLauncher](https://github.com/unmojang/FjordLauncher) - Prism Launcher Forks w/ Alt Auth Server Support * [ZalithLauncher](https://github.com/ZalithLauncher/ZalithLauncher), [⁠Mojolauncher](https://github.com/mojolauncher/mojolauncher) or [FoldCraftLauncher](https://github.com/FCL-Team/FoldCraftLauncher) / [Discord](https://discord.gg/ffhvuXTwyV) - Java Edition for Android & iOS * [SkLauncher](https://skmedix.pl/) - User-friendly Launcher * [⁠AstralRinth](https://git.astralium.su/didirus/AstralRinth) - User-friendly Launcher