search

DEVELOPMENT DIARY

Development Diary serves as a running update log that highlights ongoing improvements, feature additions, fixes, optimizations, and refinements across its web applications, giving readers a clear view of what’s new, what’s changed, and how each application continues to evolve over time.

Showing 0 items
Development Diary only started in 1/1/2026.
15/2/2026 Fresh Finds and Blog Categories Module Design Updates
UPDATE
For my Blog Category module, I refined the layout into a cleaner two-line structure where the category title appears first and the post count sits neatly below it. I also improved the overall presentation by enlarging the category image, reducing the title font size, tightening the card border radius to 5px, adding a slightly darker hover shade for better feedback, ensuring the category image sits inside a white box with a 3px border radius, and removing the underline effect on title hover to keep the design looking consistent and polished.

For my “Fresh Finds” (random blog) module, I reorganized the post preview so the metadata displays in a more logical and less repetitive way. I moved the date and category into a single “Date | Category” row directly below the article title and removed the extra category output that was causing redundancy. I also upgraded the call-to-action by converting “Read More” into a Bootstrap button (btn btn-default btn-success), aligning it to the left, and removing the horizontal divider above it so the footer feels lighter and more modern.
14/2/2026 Added 13 HTML Games
NEW
Added 13 HTML Games as below.
  • Industrial Basis
  • Idle Bee Factory
  • Rocket Soccer Derby
  • Hills of Steel
  • Kraft & Slash
  • Little Runmo
  • Plants vs Zombies 2
  • Terminator 1
  • Backrooms 2D
  • A Day in the Office
  • Amidst the Sky
  • MR Racer
  • 3D Bowling

Enjoy...
13/2/2026 Search UX Improvement Lemon-Web Games: Clear Popup Messages for Empty, Too-Short, and No-Result Queries
UPDATE
I updated the search behavior so it now gives clear feedback in every “nothing to do” situation: when I press Enter or click the search button, it checks the current query and the suggestion list, then shows a popup modal with the right message. If the input is blank, it prompts me to type a game name; if it’s only one character (too broad), it asks me to enter at least two characters; and if the query is two or more characters but returns zero matches, it shows “No such game in Lemon Games.” This makes the search feel more intentional and avoids those silent moments where nothing happens.
11/2/2026 Added 12 SNES Games
NEW
Added 12 SNES Games as below.
  • Shaq Fu
  • Chrono Trigger
  • Tetris Attack
  • Sim Earth
  • Sink or Swim
  • Teenage Mutant Ninja Turtles: Tournament Fighters
  • Teenage Mutant Ninja Turtles: Turtles in Time
  • Terminator 1
  • Earthbound
  • Street Fighter Alpha 2
  • Jungle Book
  • X-Men: Mutant Apocalypse

Enjoy...
9/2/2026 Added 6 HTML Games
NEW
Added 6 HTML Games as below.
  • Two Player Games
  • Ages of Conflict
  • Bounty of One
  • Surf GO
  • Grey-Box Testing
  • Thorn and Balloons

Enjoy...
8/2/2026 Added 5 HTML Games
NEW
Added 5 HTML Games as below.
  • Station 141
  • Station Saturn
  • POM Gets WiFi
  • Moto Road Rash
  • Highway Racer 2

Enjoy...
8/2/2026 Removed Jet Force Gemini
REMOVED
Removed Jet Force Gemini. During my playtest, game was crashing. Cant play. Removed from library.
7/2/2026 Added Slow Roads game
NEW
Added Slow Roads game - requested by Lane Ivy.
7/2/2026 Removed Derby Stallion
REMOVED
Removed Derby Stallion due to Japan language edition.
7/2/2026 Removed Yoshi Story
REMOVED
Removed Yoshi Story due to corrupt data file.
7/2/2026 Fixed Legend of Zelda Majora Mask
UPDATE
Fixed Legend of Zelda Majora Mask. Revise to use a different updated game engine at /html5emuj2 which uses newer version of EmulatorJS. Tested play and no more crash.
6/2/2026 Fixed Nazi Zombies game ViewPort
UPDATE
Fixed Nazi Zombies game - game viewport have scroll bar which is not supposed to have. Added overflow hidden. A very small and minor updates.
4/2/2026 Fixing jQuery “unrecognized expression: /” Error in Zo2 Mega Menu Smooth Scroll
UPDATE
While checking the browser console, I noticed a jQuery error saying “Syntax error, unrecognized expression: /”, which happened because the Zo2 mega menu script was treating the menu link’s href value as a CSS selector. When a link had href="/" (or any normal URL), the code attempted to run jQuery('/'), which is not a valid selector, causing the click handler to crash. The fix was simple: add a guard so the smooth-scroll animation only runs for in-page anchor links that start with # (for example #about), and let normal links like / navigate as usual. After updating site.scripts.js with this check (and preventing default only for anchors), the console error disappeared and menu behavior became stable again.

A small selector guard like this goes a long way in keeping menu clicks reliable and your site free of annoying front-end breakages.
3/2/2026 Removed Yoshi Safari
REMOVED
I decided to remove Yoshi’s Safari from my game archive after testing it and confirming the problem wasn’t my HTML or emulator settings, but the game itself. This title was designed around the SNES Super Scope (light gun), and in my current browser emulator setup it gets stuck at the opening prompt because it expects the light gun’s Turbo input, which a normal keyboard/controller can’t provide. Rather than leaving a broken or confusing experience for visitors, I pulled it from the list until I can either find a controller-compatible patched version or switch to an emulation setup that properly supports Super Scope input.
3/2/2026 Fix Hardware Tycoon Invisble Font
UPDATE
During my playtest of the games to publish blogs and youtube videos, I ran into a weird but very real problem while testing Hardware Tycoon on my site: the “Company Name” text looked invisible even though the input box was there. At first it felt like a game bug, but it turned out to be a browser styling issue affecting the game’s HTML input field that Construct 2 overlays on top of the canvas. I had recently enabled color-scheme: dark; in my page styling, and that caused Chrome to render the input text in white, which blended badly with the game’s light input background. The fix was simple and immediate: I removed the color-scheme setting completely, and the textbox returned to normal with readable text again.

Game is now fixed.
1/2/2026 iOS Fix: Disable Fullscreen Prompt and Prevent Auto Re-Fullscreen in Diablo Loader
UPDATE
Today I updated the Diablo HTML loader to fix iOS-specific fullscreen problems that only showed up on iPhone 12 mini. The main change was adding an iOS-only patch that disables fullscreen requests entirely (to stop the game from immediately jumping back into fullscreen, which prevented the touch keyboard from staying open when creating a new player) and continuously removes the green bottom prompt "Tap here to go fullscreen" so it can’t trap the screen. Everything else in your flow was kept the same (autofull redirect logic, boot overlay, R2-first download with local fallback, and the simulated drop injection of DIABDAT.MPQ), and after testing, we reverted away from the experimental caching attempt because it made startup worse on some devices, keeping the stable working version instead. For reference, here is the exact iOS-only snippet that was added:
<style>
  .lw-kill-fullscreen-prompt{
    display:none !important;
    visibility:hidden !important;
    pointer-events:none !important;
    height:0 !important;
    width:0 !important;
    overflow:hidden !important;
    opacity:0 !important;
  }
</style>

<script>
(function () {
  function isIOS() {
    var ua = navigator.userAgent || '';
    var iOS = /iP(hone|od|ad)/.test(ua);
    var iPadOS = (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);
    return iOS || iPadOS;
  }
  if (!isIOS()) return;

  // Disable fullscreen on iOS to stop auto re-fullscreen (blocks on-screen keyboard).
  function noopResolved(){ return Promise.resolve(); }
  try {
    var EP = Element.prototype;
    if (EP.requestFullscreen) EP.requestFullscreen = noopResolved;
    if (EP.webkitRequestFullscreen) EP.webkitRequestFullscreen = noopResolved;
    if (EP.msRequestFullscreen) EP.msRequestFullscreen = noopResolved;
  } catch(_) {}

  try {
    if (document.exitFullscreen) document.exitFullscreen = noopResolved;
    if (document.webkitExitFullscreen) document.webkitExitFullscreen = noopResolved;
  } catch(_) {}

  // Kill the green "Tap here to go fullscreen" prompt even if it gets injected later.
  function killGreenPrompt(root){
    var wanted = 'tap here to go fullscreen';
    var scope = root || document;
    var nodes = scope.querySelectorAll('button, a, div, span, p');
    for (var i=0;i<nodes.length;i++){
      var el = nodes[i];
      var t = (el.textContent || '').trim().toLowerCase();
      if (t === wanted){
        try { el.classList.add('lw-kill-fullscreen-prompt'); } catch(_) {}
        try { el.style.display = 'none'; } catch(_) {}
        try { el.remove(); } catch(_) {}
      }
    }
  }

  killGreenPrompt(document);

  var mo = new MutationObserver(function(muts){
    for (var i=0;i<muts.length;i++){
      var m = muts[i];
      if (m.addedNodes && m.addedNodes.length){
        for (var j=0;j<m.addedNodes.length;j++){
          var n = m.addedNodes[j];
          if (n && n.nodeType === 1) killGreenPrompt(n);
        }
      }
    }
  });

  try {
    mo.observe(document.documentElement, { childList:true, subtree:true });
  } catch(_) {}
})();
</script>

Let me know how is your game experience in iOS device. I only tested in iPad Mini, iPhone 17, 14 and 12 Mini since I only own these devices. On iPhone 12 Mini, the game really is not enjoyable due to small screen estate, but I leave the game still playable.
31/1/2026 Added 11 HTML Games
NEW
Added 11 HTML Games as below.
  • Kart Bros
  • Unlimited Trees
  • Lock the Door
  • Goblin Goopmaxxing
  • Hungry Lamu
  • 2DOOM
  • Vex 4
  • Vex 3
  • Vex 2
  • Vex 1
  • Zuma

Enjoy. I keep on adding game, but i am way behind to write the blog article for these games. Maybe i need to spend sometime to do that and stop adding more and more games.
28/1/2026 Smart Height-Based Post Display for Lemon Blog Tags and Search Pages
UPDATE
This update makes Lemon Blog Random Post module adjust itself based on the page type, using separate rules for tag pages and search pages. For /lemon-blog/tags/*, I revised the thresholds so the module now scales progressively starting at 2250px (show 1 item), then increases the visible post count in stepped ranges (2715px = 2, 3180px = 3, and so on) up to a hard cap of 30, all based on the overall #eb height. For /lemon-blog/search/*, I added stricter logic: if the #eb height is below 2715px, the entire module (including the header module title) is fully hidden; once it reaches 2715px and above, it starts showing posts progressively (2715px = 1, 3180px = 2, 3645px = 3, etc.) with a cap of 29. On all other pages, the original height-mapping logic stays unchanged, so Lemon Blog existing behaviour remains intact everywhere else.
26/1/2026 Fixed WebGL issue for Mobile and Allow Potrait mode for Rolling Sky
UPDATE
Only today i got the chance to test this on my mobile and noticed some issues. Fixed WebGL issue for Mobile and Allow Potrait mode for Rolling Sky.
25/1/2026 Added 7 HTML Games
NEW
Added 7 HTML Games as below.
  • Level Devil
  • Obby Robby Only Up
  • Nazi Zombies
  • Minecraft Shooter
  • Opposite Day
  • Megachess
  • Rolling Sky

Enjoy. Personally, i like Level Devil so much.
25/1/2026 Failed even after rebuild with 4GB WASM Limit for Serious Sam
UPDATE
I have tried to rebuild, and still problem.

The crash I am experiencing is caused by a memory allocation overflow where my game engine attempts to request 2,266,804,224 bytes (approximately 2.11 GB), exceeding the hard 2 GB (2,147,483,648 bytes) limit inherent to 32-bit WebAssembly. In my 32-bit environment, memory addresses are signed integers; once my allocation crosses the 2,147,483,647-byte threshold, the pointer value "wraps around" and becomes negative, causing my engine to look at corrupted data and trigger a browser-level rejection of the heap expansion. Despite me setting a 2 GB maximum in my WebAssembly.Memory configuration, my application is still "greedy" for more space than the browser can safely provide, leading to the "Cannot enlarge memory" error.

To resolve this, I must force my engine to operate within a smaller memory footprint by aggressively lowering my texture and cache settings in the PersistentSymbols.ini file. Specifically, reducing tex_iNormalSize, tex_iAnimationSize, and tex_iEffectSize to a value of 1 restricts the size of my loaded assets, while adding explicit caps like tex_iMaxMemSize = 128 prevents my engine from bloating. Additionally, lowering the maximum memory cap in my JavaScript to around 1.8 GB and disabling ALLOW_MEMORY_GROWTH ensures my engine hits its own internal "Out of Memory" handlers—which can trigger resource flushing—rather than hitting the 32-bit integer wall and crashing my entire browser session.

Furthermore, I attempted to bypass the 2 GB wall by increasing the memory limit to 3 GB and 4 GB, but this introduced an entirely different set of critical failures that directly linked back to my previous UTF-8 encoding issues. In a 32-bit WebAssembly environment, the browser and the underlying engine simply cannot address memory beyond the 32-bit integer limit; when the memory address wraps around or points to invalid space, the TextDecoder fails to interpret the resulting corrupted strings. This produces the "The encoded data was not valid for encoding utf-8" error and the appearance of broken characters, proving that I cannot simply "out-allocate" this architectural limitation as the engine's fundamental data handling breaks down entirely once the 2 GB boundary is breached.

Even after implementing these memory constraints and configuration adjustments, I have tried everything and it still fails. If anyone knows how to fix this issue, feel free to share your knowledge to me.
24/1/2026 New Serious Sam Classic Game
NEW
Added Serious Sam Classic Game. This, honestly took me about a whole day doing this. It was major pain to deploy this since i build using martinmullins source. His source got many missing reference. And when finally build demo, that only took me a half day and the other half is trying to load up the actual Serious Sam The First Encounter. Struggle alot.

Game deployed, but far from perfect. Below is the list of playable levels.
  • //Levels/01_Hatshepsut.wld Working
  • //Levels/02_SandCanyon.wld
  • //Levels/03_TombOfRamses.wld Working
  • //Levels/04_ValleyOfTheKings.wld
  • //Levels/05_MoonMountains.wld Working
  • //Levels/06_Oasis.wld Working
  • //Levels/07_Dunes.wld Working
  • //Levels/08_Suburbs.wld Working
  • //Levels/09_Sewers.wld Working
  • //Levels/10_Metropolis.wld Working
  • //Levels/11_AlleyOfSphinxes.wld Working
  • //Levels/12_Karnak.wld Working
  • //Levels/13_Luxor.wld Working
  • //Levels/14_SacredYards.wld Working
  • //Levels/15_TheGreatPyramid.wld

Those level failed to launch, error was due to capping of 2GB ram in the assembly. To fix, i may need to rebuild again and that is a very long long long story where i sort of forgot how i got the build working in the first place with many fixes here and there. Anyway, if i am free, i might continue, but not anytime soon. Also i may continue with the Second Encounter of the game since it is basically the same WASM engine, i just didnt upload the levels, data and etc.
24/1/2026 Finally Completed Lemon Web Games Game Info
UPDATE
This is ALOT and really TIRING updating. Finally completed after several days. Though not all game does have Game Info since the blog article is not yet published. That part requires time where i really need to playtest, upload to youtube, write a blog article and publish it. Sometimes, during my playtesting, that's where i found out the game was not stable, and many more issues and i will do my best to fix the issue. Anyway, gameinfo link from Lemon Web Games completed. Finally...
23/1/2026 Updated Final Doom to use WASD Keys
UPDATE
Updated Final DOOM for both TNT and Plutonia Experiment to use WASD keys instead of arrow keys. While original game actually uses arrow keys with dot and comma to strafe, modern game uses WASD keyws combo with mouse. This was done for other DOOM games published here, so in effort to standardize all i have reconfigure the keys, and reupload new game bundled with the new configuration. Enjoy...
22/1/2026 Block Google Adsense being displayed at Header
UPDATE
I have blocked Google AdSense from being displayed in my website header by targeting the header area with CSS and hiding only the ad elements that get injected there. This allows ads to still appear in other parts of the page, but anything inside the header (including auto-placed AdSense blocks like .google-auto-placed, ins.adsbygoogle, and related wrappers or iframes) is forced not to render, preventing ads from overlapping my logo, navigation, or top banner. I chose this approach because it keeps the layout stable and clean without disabling AdSense site-wide, so the header remains an “ad-free zone” while the rest of the site can continue monetizing normally.
20/1/2026 Updated Lemon Web Games Game Info Till "G" and fixed Lemon Application Marquee issue
UPDATE
Slowly updating the linkage for Lemon Web Games with the Blog Game Info. Worked until "G" and to be continued next day... Also updated Lemon Web Games where sometimes the marquee is not working. I updated the marquee script to handle browser back/forward caching by safely restarting the CSS animation (via a temporary class toggle) and reloading the marquee content if it was restored empty on page revisit.
19/1/2026 Lemon Web UI Improvement
UPDATE
Make minor improvement on the website's UI as below. Not much updates since busy with Life & Work.
  • Improve Search UI Design. Added loading animation whenever search anything.
  • Improve Button Designs for Web Games, Web Apps and Native Apps. Standardize to use Orange and Green colors.
  • Still work in progress to link all blog articles for games with the Game Listing in Lemon Web Games. There are 300 games, surely this will take long time.
  • Further improve the auto count for blog article for Blog Tag pages
18/1/2026 Removed Lemon Blog Intro Video
REMOVED
While it is pretty to have the intro video for Lemon Blog, i find it distracting and not really relevant as the goal is to have a simplified version of the page to show blog listings. Rework the blog page completely to simplify.

Maybe in the future i might explore how to incorporate back that video somewhere else, for now i prefer to clean look of the page.
18/1/2026 Added Proper Zero Divide 1
NEW
When playtesting Zero Divide 1, now only i realize i uploaded wrong game for Zero Divide. Fixed and reupload the correct game. Kinda funny how i wrongly uploaded wrong game.
18/1/2026 Fixed Star Wars: Masters of Teras Kasi
UPDATE
Fixed Star Wars: Masters of Teras Kasi as i am using the ripped version of the game to save disk storage, the game sometimes failed to start due to ripped intro movie. Therefore i added a save state to straight away jump to the game menu to skip intro. Solved the problem.
18/1/2026 Fixed Zombotron 1 & 2
UPDATE
While playtesting both Zombotron 1 & 2, i noticed the game canvas was small centered in the middle of the screen. I may have forgotten to check out and fixed on this previously but now i have. Fixed the small centered game canvas to full height centered game canvas for both games.

Also for Zombotron 2, games runs abit slow even on a high-end pc. Also i cant seem to get to next level 2. Maybe need to check the flash/SWF file if i obtained the correct version or not. In the future maybe....
18/1/2026 Developed new Viewport Detector
NEW
This ViewPort Detector is a simple, handy web application that instantly shows you exactly how big your browser view really is, in a clean dashboard style that is easy to read on both desktop and mobile. Instead of guessing why a layout breaks, why a button wraps, or why a canvas feels “too small,” you can see your live viewport size, visual viewport, device pixel ratio, screen size, estimated physical pixels, and orientation in one place, updating the moment you resize or rotate your device. It even includes built-in rulers along the top and left edges, making it perfect for front-end testing, responsive design tweaks, and quick sanity checks when you are building pages that must look right across different screens.

Why developed it? Well personally i am working on Cut the Rope 1 previously where i wrote a script to detect my viewport and have a script to redirect user to different build of Cut the Rope 1 for certain viewport size, reason is default is Cut the Rope HD mode, else if not met certain viewport size it will redirect to mobile version that basically supports any viewport. This tool is quite important for developer, though not useful for normal users for atleast for myself.
18/1/2026 Fixed Trivia Crack
UPDATE
While playtesting this game Trivia Crack, answer fonts are white color making it invisible.. Fixed the issue and change the font color to black.
18/1/2026 Fixed Pokemon Stadium 2
UPDATE
While playtesting this game Pokemon Stadium 2, game always freezes after i start new game. Tested with multiple settings with threads off also the same. Tested in CDN version of EmulatorJS and it was working fine. Tested using version 4.2.1 of CDN, and it was failed. Concluded that the issue was with version 4.2.1 as somehow version 4.2.3 fixed whatever issue that causes freezes.

Seems like an issue with version 4.2.1 and i have deployed new build 4.2.3 at /html5emujs2. Moving forward i might need to deploy here instead, but i will retain the old games in 4.2.1 unless i found some issues. Too much work to migrate all games to 4.2.3 and to patch the game data is not easy since this requires all end user to clear cache file. Maybe i need to study how to globally force user side or client side clear cache then i am confident to do mass upgrade for all games. For now, i deployed another instant of EmulatorJS.
18/1/2026 Fixed AlQadim
UPDATE
While playtesting this game AlQadim, found some minor issue where system does not capture mouse. Forgot that this game does uses a mouse and i need to edit the game to capture mouse. Fixed the issue.
17/1/2026 Fixed Geekwad Games of Galaxy
UPDATE
While playtesting this game Geekwad Games of the Galaxy, found some minor issue where system does not capture mouse. Forgot that this game does uses a mouse and i need to edit the game to capture mouse. Fixed the issue.
17/1/2026 Tweak Ishar 3 Game - Still not stable with Random Crash
UPDATE
Game got random crashes when played. Sometimes i can play up to 30 minutes, sometimes 10 minutes, sometimes lesser or more.

Probabbly about 2-3 hours i have spent to try troubleshoot the issue for this game. Game seems unstable and when i play, random crashes throughout the game. I have sourced the internet looking for best dosbox config and can't find any best settings as the game still buggy. Main reason is i can see this game uses it's own DOS4GW protecteed module which causes timing conflict with the DosBox emulator and i honest have tried many CPU cycle timing to ensure good synchronization between the CPU and the memory module but still random crashes.

[sdl]
fullscreen=true
output=overlay
autolock=true
sensitivity=100
waitonerror=false
priority=higher,normal
mapperfile=mapper.txt
usescancodes=true

[dosbox]
memsize=16

[cpu]
core=dynamic
cputype=486_slow
cycles=fixed 7000

[render]
frameskip=0
aspect=false
scaler=normal2x

[midi]
mpu401=intelligent
mididevice=default
midiconfig=

[mixer]
nosound=false
rate=22050
blocksize=2048
prebuffer=10

[sblaster]
sbtype=sbpro2
irq=5
dma=1
hdma=0
mixer=true
oplmode=auto
oplrate=22050

[dos]
xms=true
ems=false
umb=true
keyboardlayout=auto
vga_render_per_scanline =off

[joystick]
joysticktype=auto
timed=true
autofire=false
swap34=false
buttonwrap=true

[serial]
serial1=dummy
serial2=dummy
serial3=disabled
serial4=disabled

[ipx]
ipx=true

[autoexec]
echo off
mount c .
c:
start.exe
If anyone knows a good setting for this game, please please please please please reach out to me and share to me the config file pleaseeee..
14/1/2026 Update auto count on 'Fresh Finds' number of displayed articles
UPDATE
I’ve rolled out a smart improvement to the Random Posts module that dynamically adjusts how many related articles are shown based on the actual height of the current blog entry. Instead of relying on fixed limits, the module now measures the real content height of each post (including late-loading elements like Google AdSense) and displays an appropriate number of related articles accordingly. This ensures shorter articles don’t feel cluttered while longer reads naturally surface more recommendations, resulting in a more balanced layout, improved readability, and a smoother browsing experience across all blog pages.

Also i renamed 'Random Article' to 'Fresh Finds'. More catchy wording i guess.
13/1/2026 Minor JS Script Added for Lemon Blog Head
UPDATE
Today’s update improves the Lemon Blog experience by making the main heading dynamic and context-aware, automatically adjusting the page title based on the selected blog category. Instead of showing a static “LEMON BLOG” heading everywhere, the page now intelligently reflects whether visitors are browsing App Development, Cybersecurity, Games, Guitar Covers, or any other category, creating clearer context and better visual continuity. The change works seamlessly across desktop and mobile views, preserves the existing responsive layout, and requires no server-side changes, making the blog feel more polished, structured, and easier to navigate for readers exploring different topics.

<script>
(function () {
  const heading = document.getElementById("responsive-heading");
  if (!heading) return;

  const url = window.location.href.toLowerCase();

  const routes = [
    { match: "lemon-blog?cat=application-development", title: "APP DEVELOPMENT" },
    { match: "lemon-blog?cat=cybersecurity", title: "CYBERSECURITY" },
    { match: "lemon-blog?cat=designs-artworks", title: "DESIGN & ARTWORKS" },
    { match: "lemon-blog?cat=games", title: "GAMES" },
    { match: "lemon-blog?cat=general-information", title: "GENERAL INFO" },
    { match: "lemon-blog?cat=guitar-covers", title: "GUITAR COVER" },
    { match: "lemon-blog?cat=mobile-development", title: "MOBILE DEV" },
    { match: "lemon-blog?cat=news", title: "NEWS" },
    { match: "lemon-blog?cat=personal-blog", title: "PERSONAL BLOG" }
  ];

  let matched = false;

  for (let i = 0; i < routes.length; i++) {
    if (url.indexOf(routes[i].match) !== -1) {
      heading.innerHTML = "<strong>" + routes[i].title + "</strong>";
      matched = true;
      break;
    }
  }

  if (!matched && url.indexOf("lemon-blog") !== -1) {
    heading.innerHTML = "<strong>LEMON BLOG</strong>";
  }
})();
</script>
Not a major update, but a beautification code nevertheless...
12/1/2026 Reducing Runtime Overhead After Game Launch for Heroes of Might & Magic 3
UPDATE
As part of this update, the page now automatically disconnects its UI-cleanup observer once the actual game starts running, instead of continuously watching and modifying the launcher interface in the background. Previously, the MutationObserver remained active for the entire session, repeatedly scanning the DOM even after the VCMI launcher had handed control over to the game itself. By stopping the observer as soon as the game canvas appears, unnecessary DOM work is eliminated, reducing long-term CPU and memory overhead during extended play sessions. While this does not change the game engine itself, it helps create a cleaner runtime environment and can improve overall stability, especially during longer Heroes of Might & Magic III sessions in the browser.

Also added a safeguard that restores the original page title whenever the game launches or attempts to override it internally, ensuring consistent branding throughout gameplay.
12/1/2026 3 James Bond Games Added
NEW
Added 3 Need for Speed to the Game Library as below:
  • James Bond: License to Kill
  • James Bond: Everything or Nothing
  • James Bond: Tomorrow Never Dies
12/1/2026 Update Blog Main Page and Fix Safari Video Issues
UPDATE
Updated Lemon Blog main page as per following changes.
  • Reprogram how the blog categories are being handled.
  • Complete overhaul on the main blog landing page to add video of Lemon Guy smiling while blogging.
  • Video intro generated using Sora ChatGPT AI.
  • Spent hours on tweaking the UI of the page to make it looks nice for desktop, tablet and phone.

Also updated all videos webM and MP4 in Lemon Web Solutions. While updating the blog page, i fetch my IPAD MINI to test out and to my suprise, all of the videos are not autoplay and upon googling this is the norm for IOS devices. Anyway, fixed by implementing some small script as below. Still does not autoplay but atleast whenever user interacts with the website, it will autoplay.
<video id="example"></video>
<script>
(function () {
 var started = false;
 function startVideo() {
  if (started) return;
  started = true;
  var v = document.getElementById("example");
  if (v) {
   v.muted = true;
   v.play().catch(function(){});
  }
  document.removeEventListener("touchstart", startVideo);
  document.removeEventListener("click", startVideo);
 }
 document.addEventListener("touchstart", startVideo, { passive: true });
 document.addEventListener("click", startVideo, { passive: true });
})();
</script>
This is merely a note to myself in the future when uploading video as i tend to forgot for IOS users.
12/1/2026 7 HTML5 Games Added
NEW
Added 7 HTML5 Games to the library as below:
  • Jailbreak Obby
  • Stickman GTA City
  • Highway Traffic 3D
  • Race Master
  • Pou
  • Stealth Master
  • A Date with Death
12/1/2026 3 Need for Speed Games Added
NEW
Added 3 Need for Speed to the Game Library as below:
  • Need for Speed 3: Hot Pursuit
  • Need for Speed 4: High Stakes
  • Need for Speed 5: Porsche Unleashed
12/1/2026 Removed House of the Dead 1 & 2
REMOVED
Deployed House of the Dead 1, tested and the game runs. But slows, ugly with missing textures (depending on settings) and many more issues. Similar to House of Dead 1, part 2 is even worse. I guess Windows Emulation on JS DosBox are still far from perfect. Atleast House of the Dead 1 can still be played, but low framerate.

In the end, decided to remove both games and not going to convert this into sockdrive as i dont think performance will improve much for this game.
12/1/2026 2 New Windows95 Games Added
NEW
Added 2 Windows 95 games as below. Also put a keyboard blocker where i block all keyboard keystroke. Reason, this can create confusion for new players who never played the original where the keyboard was meant for player 2.
  • Virtua Cop 1
  • Virtua Cop 2
Virtua Cop 1 plays fine. Virtua Cop 2, is quite slow during playtest. I tested the game bundle at JSDos Studio, and it was running smooth. Weird... I am using latest version. Another weird part is, tested at (https://v8.js-dos.com/studio/) also slow, and when tested at (https://dos.zone/studio-v8/) was okay. I have a feeling the ones at doszone is having a better optimized version of the jsdos. Maybe in the future i might need to inspect why and how.
11/1/2026 2 New Windows98 Games Added
NEW
Added 2 Windows 98 games as below:
  • Darkseed 2
  • Forsaken
11/1/2026 13 New Nintendo64 Games Added
NEW
Added several Nintendo64 Games to the library. Also apply pthreads for all of Nintendo64 games. The following games are added:
  • Aidyn Chronicles: The First Mage
  • Banjo Tooie
  • Derby Stallion
  • ECW Hardcore Revolution
  • Gex3: Deep Cover Gecko
  • James Bond: The World is Not Enough
  • WCW Backstage Assault
  • Shadow Man
  • Ridge Racer 64
  • Mario Party 2
  • Mario Party 3
  • Pokemon Stadium 1
  • Jet Force Gemini
11/1/2026 8 New DOS Games Added
NEW
Added several DOS Games to the library. Added some scripts to automate intro section by simulating required keystroke, for example for Predator 2, need to press E to change to Adlib sound system then only starts the game. Same goes for others game where i had to programme for such automation.

The following games are added:
  • Ishar 0: Crystal of Arborea
  • Ishar 1: Legend of Fortress
  • Ishar 2: Messengers of Doom
  • Ishar 3: The Seven Gates of Infinity
  • Geekwad: Games of Galaxy
  • Metal & Lace: Battle of Robo Babes
  • Electro Man
  • Predator 2
  • Darkseed 1
11/1/2026 Updated Stonekeep & Dungeon Master 2
UPDATE
Updated Stonekeep to use full data, includes full game video files and voice. Previously audiotrack and video files were stripped to give faster data load. But users wanted a true game experience may wants the full data to enjoy the cutscene and especially audio voice tracks that were missing previously.

Updated Dungeon Master 2 as well to use my own local copy of the original game. Previously when i play the game online, noticed some bugs and this does not happens when i use my own copy that i have since 90s. Now should be okay.
10/1/2026 New Cache Management
NEW
Introduced a new browser cache management feature that allows users to view how much browser storage is being used specifically by lemon-web.net, helping players better understand and manage their local game data. As the number of games on the platform continues to grow and some titles consume larger amounts of storage, this tool helps prevent unexpected loss of older save data by giving users visibility into their browser cache usage. While cache clearing is currently handled at the site level for simplicity and reliability, this feature lays the foundation for more granular, game-specific cache management in the future.

For now, it only functions to clear current cache for Lemon Web Solutions (www.lemon-web.net) website, but in the future i will be working on having the function to delete cache for specific games. This give controls to users to delete cache for games that they are no longer playing to have higher cache allocation for other games and to avoid loosing their save games if the browser decided to clear cache unknowingly.

Also need to work on getting cache files from CDN since this only take game data files that are hosted here, as some of the games files were hosted in our CDN.
10/1/2026 Removed Unreal 1
REMOVED
Awhile back i did deployed Unreal 1 Gold Edition using the same Web Assembly used in Unreal Tournament 99. While the web assembly is very much playable for Unreal Tournament, for Unreal 1 is a complete different result. Game are buggy, buttons are unpushable or unsable, textures are not rendered properly and many more issues. But the game runs smooth with high frame rate.

Then i tried another solutions using jsdos running Windows 95 and Windows 98, both yield same result. Poor performance. Game is playable, no bugs. But the framerate, i am getting around 10fps to 30fps. Most of the time is 10fps or lower while certain areas i might get higher framerates. Game is playable, but not enjoyable. I did try settings to use 3dfx wrapper (jsdos v8 does supports this as they provide glide wrapper), opengl, software rendering, all yields almost the same result. Poor performance.

For now, let's wait and see if any developer willing to work and complete the icculus WASM of the Unreal to fully complete the game DLLs for Unreal 1. Defintely not me as i am no expert in this assembly and even if i am, this will take a huge amount of time.
10/1/2026 Removed Sim City 3000
REMOVED
I did experiment with deploying SimCity 3000 using a sockified Windows 98 build, hoping it would finally deliver a stable web-based experience. Unfortunately, the simulation performance was already extremely slow right from the start, even before building a single zone or structure. Basic interactions felt sluggish, and the game speed never reached a playable state, making it clear this wasn’t just a late-game scaling issue. After multiple tests and comparisons with other Windows titles that run far better under the same setup, I ultimately decided to remove SimCity 3000 from the web lineup, as current browser-based emulation simply can’t provide the level of performance the game requires.

Maybe in the future when the jsdos v8 has evolved better in their web assembly or higher processing power in the future, but for now i remove this game.
9/1/2026 Sock-Fied Windows Game Files
UPDATE
Lemon Web has fully migrated its Windows 3.11, Windows 95, and Windows 98 games to a new sockdrive-based js-dos system, finally fixing the long-standing issue where in-game saves were unreliable or lost. With this change, classic Windows games can now save progress properly, allowing players to close the browser and return later without losing their game. The update removes one of the most frustrating limitations of browser-based Windows emulation and brings the experience much closer to playing these games on a real retro PC.

The following games are updated:
  • Age of Empires 1 - Windows 95
  • Animaniacs Gamepack - Windows 98
  • Sim Towe - Windows 3.11
  • Yoot Tower - Windows 98


Now users can enjoy games here where they can save their game progress ingame. I will start to upload more classic Windows games.
8/1/2026 Fix Some of DOS Games Assets
UPDATE
While reviewing the DOS games section, I ran into issues where some titles failed to load background music or internal assets, and it quickly became clear that this was not a problem with js-dos itself but a server-side access rule issue. The cause was very similar to a previous problem I encountered with EmulatorJS games, where an overly strict .htaccess redirect was unintentionally intercepting file requests made by the games and returning redirects instead of the actual files. After refining the rules so that only real game directories are restricted—while allowing individual files to be fetched normally—the affected DOS games are now able to load their required assets correctly, restoring proper audio playback and overall gameplay behavior.

Reminder to myself, have to really test out other games from time to time especially whenever i carry out some changes on security.
8/1/2026 Fix SegaSaturn and NeoGeo Games
UPDATE
I recently started testing a few games for Sega Saturn and NeoGeo and immediately ran into loading errors, which led me to investigate what was actually happening behind the scenes; after some digging, I discovered the issue wasn’t with the emulator or the game files themselves, but with an over-broad .htaccess rewrite rule that was unintentionally redirecting essential BIOS files like saturn_bios.bin with a 302 response, causing the emulators to fail silently—once I refined the rule to apply only to real game directories and not standalone files, the BIOS loaded correctly and the Saturn and NeoGeo titles began running as expected.

Reminder to myself, have to really test out other games from time to time especially whenever i carry out some changes on security.
8/1/2026 Fix Web-TV: TV3 Streaming
UPDATE
After multiple attempts to stabilise TV3 on Lemon Web TV, the real issue was traced back to an unreliable streaming source. By switching to a new source and monitoring it over two days, TV3 streaming is now stable, consistent across devices, and delivers proper HD quality, making this fourth revision the most reliable fix so far.

Now the TV3 Streaming seems stable and have monitored since yesterday and i can conclude looks okay for now.

I also have published an article in the blog for this as below.

Learn More
8/1/2026 Updated DOOM 3
UPDATE
Previous web assembly of DOOM 3 was compiled using shareware version of DOOM 3. I have rebuild again using D3WASM source code, and spent hours updating the CMakeList, pre & post chunked file, repackage the game data files to use the full version. Tested locally and running fine. Now uploaded to Lemon Web Games and tested in browser using my desktop and my Surface Pro, both work fine. Didn't play far enough to validate, but atleast reach to Level 3 or 4 i think after fought several imps.

I re-attempt to recompile again in my local server environment for Doom 3 Ressurection of Evil (ROE), but fail. Game runs, can reach ingame menu, but then when starting new level, i got error "Function 'map_erebus1::main' not found ...". This actually tells me the source code might not have that function exists, and when i checked, yup there is none. I am using D3WASM from Gabrielcuvillier (https://github.com/gabrielcuvillier/d3wasm).

Now i have downloaded the source from origin D3WASM and found the original source code does have \d3wasm\neo\d3xp, but was removed by his version. I guess he is only working on DOOM 3 only. To get DOOM 3 ROE, well that is a lot of work to add those files, check all the CPP files to expand, and revise the CMAKE. If i got the time, i might do this one day. For now, enjoy the normal DOOM 3.
5/1/2026 Updated Cut the Rope 1
UPDATE
Finally, i give up. To get it working on mobile is impossible on the current build of the web assembly. Managed to find another non-hd version webassembly.

Deployed another instant of Cut the Rope 1, but for mobile version. Wrote simple script if detects mobile, redirects to that mobile version instead. Finally, i can give it a rest and enjoy this game. Honestly the reason why i spent so much time on this was, way back in 5 years ago, this was my favourite game and i purchased it through Microsoft Store. Played in my old Surface Pro 6 and enjoyed it. Sadly, i think they have removed the game from the Playstore and i do not know why they did that. Anyway, now i will be enjoying this game from here instead.
5/1/2026 Added Cut The Rope 2
NEW
Added Cut the Rope 2.

This took me long time to deploy due to one reason. Combination of server's Litespeed and Cloudflare causes me headache. Whenever the server handles GZIP and BROTLI compression, Litespeed actually decompress first and modifying the host header as "Transfer-Encoding: chunked ". Manually create Cloudflare Response Header custom rule where first, remove response header "Content-Encoding" then set static host header "Content-Encoding" with value "gzip" and another one is "Content-Encoding".
5/1/2026 Updated OneXGPUPanel V1.03
UPDATE
I updated my OneXGPU Panel to support the new Intel Graphics Software and revised AMD paths, while separating Playnite into Intel and eGPU versions to avoid database conflicts. The panel now safely automates eGPU connect and disconnect by managing processes, storage, GPU state, and launcher shortcuts end to end.

Not a major update, but atleast something..
5/1/2026 Added Cut The Rope 1
NEW
Added Cut the Rope 1.

Tested working fine. However, i tried playing from mobile, stuck at 99% loading. May need to test further on mobile. For now i leave it playable on the website first.
4/1/2026 Revise the Mobile Navigation Menu
UPDATE
Rework completely to simplify the Mobile Navigation Menu. Previously, the menu is showing all items, now i simplified it to show Top Level Parent items only. I also rework on the design massively by changing the overall design from light theme to dark theme. Completely rework on the slide in and slide right animation, with slight delay for 200 miliseconds to wait scrolling top top then only expand the navigation menu. Added breadcrumbs. While breadcrumbs is not necessary, but i feel sometimes visitor might need a reference where they are right now in a website, especially for mobile users. This should helps them.

Design into 4 cards style menu, Home, Services, Applications and Blog. No more long cluttered menu item. This also help higher traffic for other pages as some users directly go to certain pages bypassing the top level pages.

Looks simple, but took me 5 hours for this redesign and rework.
4/1/2026 Added new Development Diary
NEW
Starting today, I will start to keep track on my development activities carried out for all Lemon Web services. I will start to track in 2026 onwards. This helps myself to track my own progress and also to our visitors as well.

Over the years, there are many changes that are untracked. It really ticks me few days back where i remembered, "Hey, i used to developed this previously but i have forgotten what or how i did it". I will not enter from A to Z how i did it, but some keywords that will triggers my brain to recall back how i did it rather than head scratching session for few minutes, then suddenly remembers, "ahhh i did it like this..."
3/1/2026 Removed Half Life Opposing Force & Blue Shift
REMOVED
Previously i have added Half Life Opposing Force & Blue Shift in the library. During my play test, these games are so buggy and unplayable at many levels. I have decided rather than fixing the issue one by one, let's just remove it completely from the library.

Actual game data still sits in the server, but maybe if i got time i will revisit this. Blueshift looks almost playable with minor bugs. But Opposing Force is defintely no-go. Reason being is Opposing Force uses custom DLL and the engine build does not compiled together with the additional DLL. To review the source code and compile myself, well this takes huge time to study and do and the possibility of not success is there as well. Well, let's drop it completely. Maybe.. Blueshift i might give it a go in the future.
4/1/2026 Revise LemonWeb Application & Services
UPDATE
Revise LemonWeb Application page to redesign the UI elements. Contents are more or less the same. Most of the changes are mostly cosmetic.
3/1/2026 Added Unreal Tournament 99
NEW
Using source from icculus.org web assembly and game data from internet archive, have successfully build new Unreal Tournament 99. However, original source has many issues where games are not saved, mouse cursor grab issues. All issues has been fixed and should be playable.

Spent many hours to make the game save-able, and also the annoyed mouse clipping issue. Atleast now is resolved, but if it's happen during your gameplay, just move the mouse in anti clockwise from bottom left, bottom right, top right, top left, bottom left and continue this till the game canvas restored.
2/1/2026 Added Several Emulation Games
NEW
Added the following games.
  • PSX - Qix Neo
  • PSX - Q*Bert
  • N64 - Quest64
  • PSX - Heart of Darkness
  • SNES - Terminator 2: Judgement Day
  • SNES - Pitfall: The Mayan Adventure
  • SNES - Donkey Kong Country 3: Dixie's Kong's Double Trouble
  • SNES - Donkey Kong Country 2: Diddy's Kong Quest
  • GBA - Mortal Kombat: Deadly Alliance
  • WIN98 - Yoot Tower
2/1/2026 Added Jazz Jackrabbit 2
NEW
Build and deployed Jazz Jackrabbit 2. Added official full version from Internet Archive repository. However, default game build is running shareware, therefore added script on first load, refreshes in 500miliseconds to full version as I injected it to the user's IndexedDB data.
1/1/2026 Updated Half Life 1
UPDATE
Update Half Life 1 game to be more stable by using different web assembly and rebuild new. This version has better stability as previous too many bugs. Also updated to have save game feature as it will save in browser's indexedDB state.

This version is using completely different source. Previously, i am using Xash3d latest build. It was buggy and unstable. Most obvious one was the intro section right after boarding the tram, the guard never opens the door. Then i had to write a game argument that straight away skips this section. Then next bug was unable to push the trolley thingy to the center during the initial phase. In the end, i end up creating multiple saves point so that users can skip and load the game at certain check points of the levels.

Recently, i stumbled across a different source of Half Life 1 Web Assembly, and this one works fine. Played through several levels, and seems stable. Only downside is the sound stuttering that quite annoys me to be honest, but atleast playable. I also revise the code now to save the game state in browser's cache IndexedDB. So can always continue off your gameplay.
1/1/2026 Revise Minecraft Loader
UPDATE
Small update. I find it annoying of the 5 seconds wait for the loading which is purely cosmetic or maybe other developers try to capitalize that moment to insert ads maybe. Either way, reviewed the lengthy html code and revise that section to skip that waiting.

Not a major update, but atleast 5 seconds saved...

Developed Apps So Far..

Native Desktop Applications
Web-Based Classic DOS Games
HTML5-Based Web Games
Customized Web & Applications
Self / Private Cloud Solutions
IT Helpdesk System