Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 31 additions & 5 deletions build.js
Original file line number Diff line number Diff line change
Expand Up @@ -744,11 +744,11 @@ fs.readdir(postsDir, (err, files) => {
'<div class="notepad-menubar" style="background: #c0c0c0; border-bottom: 1px solid #808080; padding: 2px 4px; font-size: 11px; position: relative; height: 18px; margin-top: 18px;">' +
'<span class="notepad-menu" onmouseenter="showNotepadMenu(this, &quot;file&quot;)" onmouseleave="hideNotepadMenu()">File</span>' +
'<span class="notepad-menu" onmouseenter="showNotepadMenu(this, &quot;edit&quot;)" onmouseleave="hideNotepadMenu()">Edit</span>' +
'<div id="notepad-file-menu" class="notepad-dropdown" style="display: none; position: absolute; top: 100%; left: 4px; background: #c0c0c0; border: 1px outset #c0c0c0; min-width: 80px; z-index: 1000;">' +
'<div class="notepad-menu-item" onclick="saveNote(); hideNotepadMenu();">Save</div>' +
'<div id="notepad-file-menu" class="notepad-dropdown" style="display: none; position: absolute; top: 100%; left: 4px; background: #c0c0c0; border: 1px outset #c0c0c0; min-width: 80px; z-index: 1000;" onmouseenter="cancelHideNotepadMenu()" onmouseleave="hideNotepadMenu()">' +
'<div class="notepad-menu-item" onclick="saveNote(); hideNotepadMenuImmediate();">Save</div>' +
'</div>' +
'<div id="notepad-edit-menu" class="notepad-dropdown" style="display: none; position: absolute; top: 100%; left: 36px; background: #c0c0c0; border: 1px outset #c0c0c0; min-width: 80px; z-index: 1000;">' +
'<div class="notepad-menu-item" onclick="clearNote(); hideNotepadMenu();">Clear</div>' +
'<div id="notepad-edit-menu" class="notepad-dropdown" style="display: none; position: absolute; top: 100%; left: 36px; background: #c0c0c0; border: 1px outset #c0c0c0; min-width: 80px; z-index: 1000;" onmouseenter="cancelHideNotepadMenu()" onmouseleave="hideNotepadMenu()">' +
'<div class="notepad-menu-item" onclick="clearNote(); hideNotepadMenuImmediate();">Clear</div>' +
'</div>' +
'</div>' +
'<div class="window-body" style="height: calc(100% - 48px); padding: 4px;">' +
Expand Down Expand Up @@ -798,9 +798,17 @@ fs.readdir(postsDir, (err, files) => {
if (notepad) notepad.value = '';
}

let notepadMenuTimeout = null;

function showNotepadMenu(menuElement, menuType) {
// Clear any pending hide timeout
if (notepadMenuTimeout) {
clearTimeout(notepadMenuTimeout);
notepadMenuTimeout = null;
}

// Hide all menus first
hideNotepadMenu();
hideNotepadMenuImmediate();

// Show the specific menu
const menuId = 'notepad-' + menuType + '-menu';
Expand All @@ -811,12 +819,30 @@ fs.readdir(postsDir, (err, files) => {
}

function hideNotepadMenu() {
// Use a small delay to allow mouse movement between menu and dropdown
if (notepadMenuTimeout) {
clearTimeout(notepadMenuTimeout);
}
notepadMenuTimeout = setTimeout(() => {
hideNotepadMenuImmediate();
notepadMenuTimeout = null;
}, 150);
}

function hideNotepadMenuImmediate() {
const fileMenu = document.getElementById('notepad-file-menu');
const editMenu = document.getElementById('notepad-edit-menu');
if (fileMenu) fileMenu.style.display = 'none';
if (editMenu) editMenu.style.display = 'none';
}

function cancelHideNotepadMenu() {
if (notepadMenuTimeout) {
clearTimeout(notepadMenuTimeout);
notepadMenuTimeout = null;
}
}

// Windows Phone 8 Functions
function toggleTheme() {
const body = document.body;
Expand Down
2 changes: 1 addition & 1 deletion public/2025-08-31-natural-serene-sounds.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<div class="title-bar-text">Starting My New YouTube Channel: Natural Serene Sounds</div>
</div>
<div class="window-body">
<p><em>By jcleigh on Fri Aug 29 2025 19:00:00 GMT-0500 (Central Daylight Time)</em></p>
<p><em>By jcleigh on Sat Aug 30 2025 00:00:00 GMT+0000 (Coordinated Universal Time)</em></p>
<p><strong>Starting My New YouTube Channel: Natural Serene Sounds</strong></p>
<p>I recently launched a new YouTube channel called <a href="https://www.youtube.com/@NaturalSereneSounds">Natural Serene Sounds</a>, a space dedicated to calming, atmospheric videos designed to help with relaxation, focus, and sleep.</p>
<p>Putting this project together has been a really enjoyable creative journey, and I’ve been piecing it all together with the help of some amazing tools:</p>
Expand Down
40 changes: 33 additions & 7 deletions public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@
<marquee>This blog is currently under construction. Please check back later for real content.</marquee>
<p class="post-header">Recent Posts:</p>
<ul>
<li><a href="#" class="post-link" data-title="Starting My New YouTube Channel: Natural Serene Sounds" data-content="%3Cp%3E%3Cstrong%3EStarting%20My%20New%20YouTube%20Channel%3A%20Natural%20Serene%20Sounds%3C%2Fstrong%3E%3C%2Fp%3E%0A%3Cp%3EI%20recently%20launched%20a%20new%20YouTube%20channel%20called%20%3Ca%20href%3D%22https%3A%2F%2Fwww.youtube.com%2F%40NaturalSereneSounds%22%3ENatural%20Serene%20Sounds%3C%2Fa%3E%2C%20a%20space%20dedicated%20to%20calming%2C%20atmospheric%20videos%20designed%20to%20help%20with%20relaxation%2C%20focus%2C%20and%20sleep.%3C%2Fp%3E%0A%3Cp%3EPutting%20this%20project%20together%20has%20been%20a%20really%20enjoyable%20creative%20journey%2C%20and%20I%E2%80%99ve%20been%20piecing%20it%20all%20together%20with%20the%20help%20of%20some%20amazing%20tools%3A%3C%2Fp%3E%0A%3Cul%3E%0A%3Cli%3EChatGPT%20%E2%80%93%20I%E2%80%99ve%20been%20using%20AI%20to%20brainstorm%20new%20video%20ideas%20and%20craft%20the%20titles%20and%20descriptions%20for%20each%20upload.%3C%2Fli%3E%0A%3Cli%3EImagery%20%E2%80%93%20For%20visuals%2C%20I%20use%20photos%20from%20Unsplash%20as%20well%20as%20AI-generated%20imagery%20created%20with%20ChatGPT.%3C%2Fli%3E%0A%3Cli%3EVideo%20Overlays%20%E2%80%93%20I%20add%20extra%20movement%20and%20depth%20to%20the%20scenes%20using%20overlays%20from%20Videezy%20(like%20snowfall%2C%20embers%2C%20or%20gentle%20lighting%20effects).%3C%2Fli%3E%0A%3Cli%3ESound%20Design%20%E2%80%93%20The%20ambient%20audio%20and%20sound%20effects%20come%20from%20Epidemic%20Sound%2C%20which%20has%20been%20a%20perfect%20library%20for%20immersive%20soundscapes.%3C%2Fli%3E%0A%3Cli%3EEditing%20%E2%80%93%20Everything%20gets%20brought%20together%20and%20polished%20in%20DaVinci%20Resolve%2C%20which%20has%20been%20an%20incredible%20tool%20for%20editing%20and%20rendering%20the%20final%20videos.%3C%2Fli%3E%0A%3C%2Ful%3E%0A%3Cp%3EThe%20process%20of%20combining%20all%20these%20elements%20has%20been%20both%20relaxing%20and%20rewarding.%20My%20goal%20with%20Natural%20Serene%20Sounds%20is%20simple%3A%20to%20create%20a%20little%20corner%20of%20YouTube%20where%20people%20can%20pause%2C%20unwind%2C%20and%20enjoy%20a%20sense%20of%20peace.%3C%2Fp%3E%0A%3Cp%3EIf%20that%20sounds%20like%20something%20you%E2%80%99d%20enjoy%2C%20I%E2%80%99d%20love%20for%20you%20to%20check%20it%20out%20and%20subscribe%3A%20Natural%20Serene%20Sounds%20on%20YouTube%3A%20%3Ca%20href%3D%22https%3A%2F%2Fwww.youtube.com%2F%40NaturalSereneSounds%22%3Ehttps%3A%2F%2Fwww.youtube.com%2F%40NaturalSereneSounds%3C%2Fa%3E.%3C%2Fp%3E%0A">Starting My New YouTube Channel: Natural Serene Sounds</a> - 2025-08-29</li>
<li><a href="#" class="post-link" data-title="Starting My New YouTube Channel: Natural Serene Sounds" data-content="%3Cp%3E%3Cstrong%3EStarting%20My%20New%20YouTube%20Channel%3A%20Natural%20Serene%20Sounds%3C%2Fstrong%3E%3C%2Fp%3E%0A%3Cp%3EI%20recently%20launched%20a%20new%20YouTube%20channel%20called%20%3Ca%20href%3D%22https%3A%2F%2Fwww.youtube.com%2F%40NaturalSereneSounds%22%3ENatural%20Serene%20Sounds%3C%2Fa%3E%2C%20a%20space%20dedicated%20to%20calming%2C%20atmospheric%20videos%20designed%20to%20help%20with%20relaxation%2C%20focus%2C%20and%20sleep.%3C%2Fp%3E%0A%3Cp%3EPutting%20this%20project%20together%20has%20been%20a%20really%20enjoyable%20creative%20journey%2C%20and%20I%E2%80%99ve%20been%20piecing%20it%20all%20together%20with%20the%20help%20of%20some%20amazing%20tools%3A%3C%2Fp%3E%0A%3Cul%3E%0A%3Cli%3EChatGPT%20%E2%80%93%20I%E2%80%99ve%20been%20using%20AI%20to%20brainstorm%20new%20video%20ideas%20and%20craft%20the%20titles%20and%20descriptions%20for%20each%20upload.%3C%2Fli%3E%0A%3Cli%3EImagery%20%E2%80%93%20For%20visuals%2C%20I%20use%20photos%20from%20Unsplash%20as%20well%20as%20AI-generated%20imagery%20created%20with%20ChatGPT.%3C%2Fli%3E%0A%3Cli%3EVideo%20Overlays%20%E2%80%93%20I%20add%20extra%20movement%20and%20depth%20to%20the%20scenes%20using%20overlays%20from%20Videezy%20(like%20snowfall%2C%20embers%2C%20or%20gentle%20lighting%20effects).%3C%2Fli%3E%0A%3Cli%3ESound%20Design%20%E2%80%93%20The%20ambient%20audio%20and%20sound%20effects%20come%20from%20Epidemic%20Sound%2C%20which%20has%20been%20a%20perfect%20library%20for%20immersive%20soundscapes.%3C%2Fli%3E%0A%3Cli%3EEditing%20%E2%80%93%20Everything%20gets%20brought%20together%20and%20polished%20in%20DaVinci%20Resolve%2C%20which%20has%20been%20an%20incredible%20tool%20for%20editing%20and%20rendering%20the%20final%20videos.%3C%2Fli%3E%0A%3C%2Ful%3E%0A%3Cp%3EThe%20process%20of%20combining%20all%20these%20elements%20has%20been%20both%20relaxing%20and%20rewarding.%20My%20goal%20with%20Natural%20Serene%20Sounds%20is%20simple%3A%20to%20create%20a%20little%20corner%20of%20YouTube%20where%20people%20can%20pause%2C%20unwind%2C%20and%20enjoy%20a%20sense%20of%20peace.%3C%2Fp%3E%0A%3Cp%3EIf%20that%20sounds%20like%20something%20you%E2%80%99d%20enjoy%2C%20I%E2%80%99d%20love%20for%20you%20to%20check%20it%20out%20and%20subscribe%3A%20Natural%20Serene%20Sounds%20on%20YouTube%3A%20%3Ca%20href%3D%22https%3A%2F%2Fwww.youtube.com%2F%40NaturalSereneSounds%22%3Ehttps%3A%2F%2Fwww.youtube.com%2F%40NaturalSereneSounds%3C%2Fa%3E.%3C%2Fp%3E%0A">Starting My New YouTube Channel: Natural Serene Sounds</a> - 2025-08-30</li>
</ul>
</div>
</div>
Expand Down Expand Up @@ -219,7 +219,7 @@ <h2 class="wp8-title" style="font-size: 32px;">recent posts</h2>
The process of combining all these elements has been both relaxing and rewarding. My goal with Natural Serene Sounds is simple: to create a little corner of YouTube where people can pause, unwind, and enjoy a sense of peace.
If that sounds like something you’d enjoy, I’d love for you to check it out and subscribe: Natural Serene Sounds on YouTube: https://www.youtube.com/@NaturalSereneSounds.
">
<div class="wp8-post-date">Aug 28</div>
<div class="wp8-post-date">Aug 30</div>
<div class="wp8-tile-content">
<h3 class="wp8-tile-title">Starting My New YouTube Channel: Natural Serene Sounds</h3>
<p class="wp8-tile-subtitle">Starting My New YouTube Channel: Natural Serene So...</p>
Expand Down Expand Up @@ -658,11 +658,11 @@ <h2 id="wp8-modal-title" class="wp8-modal-title"></h2>
'<div class="notepad-menubar" style="background: #c0c0c0; border-bottom: 1px solid #808080; padding: 2px 4px; font-size: 11px; position: relative; height: 18px; margin-top: 18px;">' +
'<span class="notepad-menu" onmouseenter="showNotepadMenu(this, &quot;file&quot;)" onmouseleave="hideNotepadMenu()">File</span>' +
'<span class="notepad-menu" onmouseenter="showNotepadMenu(this, &quot;edit&quot;)" onmouseleave="hideNotepadMenu()">Edit</span>' +
'<div id="notepad-file-menu" class="notepad-dropdown" style="display: none; position: absolute; top: 100%; left: 4px; background: #c0c0c0; border: 1px outset #c0c0c0; min-width: 80px; z-index: 1000;">' +
'<div class="notepad-menu-item" onclick="saveNote(); hideNotepadMenu();">Save</div>' +
'<div id="notepad-file-menu" class="notepad-dropdown" style="display: none; position: absolute; top: 100%; left: 4px; background: #c0c0c0; border: 1px outset #c0c0c0; min-width: 80px; z-index: 1000;" onmouseenter="cancelHideNotepadMenu()" onmouseleave="hideNotepadMenu()">' +
'<div class="notepad-menu-item" onclick="saveNote(); hideNotepadMenuImmediate();">Save</div>' +
'</div>' +
'<div id="notepad-edit-menu" class="notepad-dropdown" style="display: none; position: absolute; top: 100%; left: 36px; background: #c0c0c0; border: 1px outset #c0c0c0; min-width: 80px; z-index: 1000;">' +
'<div class="notepad-menu-item" onclick="clearNote(); hideNotepadMenu();">Clear</div>' +
'<div id="notepad-edit-menu" class="notepad-dropdown" style="display: none; position: absolute; top: 100%; left: 36px; background: #c0c0c0; border: 1px outset #c0c0c0; min-width: 80px; z-index: 1000;" onmouseenter="cancelHideNotepadMenu()" onmouseleave="hideNotepadMenu()">' +
'<div class="notepad-menu-item" onclick="clearNote(); hideNotepadMenuImmediate();">Clear</div>' +
'</div>' +
'</div>' +
'<div class="window-body" style="height: calc(100% - 48px); padding: 4px;">' +
Expand Down Expand Up @@ -712,9 +712,17 @@ <h2 id="wp8-modal-title" class="wp8-modal-title"></h2>
if (notepad) notepad.value = '';
}

let notepadMenuTimeout = null;

function showNotepadMenu(menuElement, menuType) {
// Clear any pending hide timeout
if (notepadMenuTimeout) {
clearTimeout(notepadMenuTimeout);
notepadMenuTimeout = null;
}

// Hide all menus first
hideNotepadMenu();
hideNotepadMenuImmediate();

// Show the specific menu
const menuId = 'notepad-' + menuType + '-menu';
Expand All @@ -725,12 +733,30 @@ <h2 id="wp8-modal-title" class="wp8-modal-title"></h2>
}

function hideNotepadMenu() {
// Use a small delay to allow mouse movement between menu and dropdown
if (notepadMenuTimeout) {
clearTimeout(notepadMenuTimeout);
}
notepadMenuTimeout = setTimeout(() => {
hideNotepadMenuImmediate();
notepadMenuTimeout = null;
}, 150);
}

function hideNotepadMenuImmediate() {
const fileMenu = document.getElementById('notepad-file-menu');
const editMenu = document.getElementById('notepad-edit-menu');
if (fileMenu) fileMenu.style.display = 'none';
if (editMenu) editMenu.style.display = 'none';
}

function cancelHideNotepadMenu() {
if (notepadMenuTimeout) {
clearTimeout(notepadMenuTimeout);
notepadMenuTimeout = null;
}
}

// Windows Phone 8 Functions
function toggleTheme() {
const body = document.body;
Expand Down