From ade7a11d0be37cdcaee3d6c4034ec6d6e6e7fbc9 Mon Sep 17 00:00:00 2001 From: Jeremy Karst Date: Wed, 7 Jan 2026 01:31:54 -0500 Subject: [PATCH] Added LICENSE to the repository --- LICENSE | 68 +++++++++++++++++++++++++ layouts/partials/background-images.html | 10 ++-- layouts/partials/home/page.html | 10 ++-- 3 files changed, 78 insertions(+), 10 deletions(-) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..959e85c --- /dev/null +++ b/LICENSE @@ -0,0 +1,68 @@ +# Dual License + +This repository contains both open source code and proprietary content. Different parts are licensed under different terms as described below. + +## Part 1: Code and Effects (MIT License) + +The following components are licensed under the MIT License: + +- All source code files (including but not limited to `.js`, `.css`, `.html`, `.toml` files) +- Hugo layouts and templates +- Configuration files +- Docker and build configuration +- JavaScript effects and animations +- Custom CSS styles and effects + +### MIT License + +Copyright (c) 2026 KarstTech LLC + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +## Part 2: Content, Media, and Branding (All Rights Reserved) + +The following components are NOT licensed for reuse and remain the exclusive property of KarstTech LLC: + +- All content within the `content/` directory, including: + - Blog posts and articles + - Professional project descriptions + - Written documentation and text content +- All logos and branding materials, including: + - KarstTech logos (in any format or variation) + - Brand identity elements +- All media files, including but not limited to: + - Images in `static/backgrounds/` + - Images in `assets/img/` + - Photos and graphics in article directories + - Videos and animations used as content + - Any other image, video, or multimedia files + +Where not attributed to others these materials are protected by copyright and may not be copied, modified, distributed, or used without explicit written permission from KarstTech LLC. + +## Clarifications + +- **Code that generates or displays content**: Licensed under MIT (the code itself) +- **The actual content being displayed**: All rights reserved +- **Third-party content in `themes/`**: Subject to their original licenses +- **When in doubt**: Code and technical implementations are MIT licensed; creative works, branding, and written content are all rights reserved + +## Contact + +For questions about licensing or to request permission to use proprietary content, please contact KarstTech LLC. + diff --git a/layouts/partials/background-images.html b/layouts/partials/background-images.html index f56e7f8..f3400c5 100644 --- a/layouts/partials/background-images.html +++ b/layouts/partials/background-images.html @@ -45,18 +45,18 @@ }; window.addEventListener('mousemove', (e) => { - if (isRevealed) return; - circle.style.left = e.clientX + 'px'; circle.style.top = e.clientY + 'px'; if (isOverContent(e)) { - if (hoverTimer) { - resetTimer(); + if (isRevealed || hoverTimer) { + resetEffect(); } return; } + if (isRevealed) return; + if (!hoverTimer) { hoverTimer = setTimeout(() => { circle.classList.add('active'); @@ -87,7 +87,7 @@ document.addEventListener('mouseout', (e) => { if (!e.relatedTarget && !e.toElement) { - resetTimer(); + resetEffect(); } }); window.addEventListener('blur', resetTimer); diff --git a/layouts/partials/home/page.html b/layouts/partials/home/page.html index 429197f..634b611 100644 --- a/layouts/partials/home/page.html +++ b/layouts/partials/home/page.html @@ -37,18 +37,18 @@ }; window.addEventListener('mousemove', (e) => { - if (isRevealed) return; - circle.style.left = e.clientX + 'px'; circle.style.top = e.clientY + 'px'; if (isOverContent(e)) { - if (hoverTimer) { - resetTimer(); + if (isRevealed || hoverTimer) { + resetEffect(); } return; } + if (isRevealed) return; + if (!hoverTimer) { hoverTimer = setTimeout(() => { circle.classList.add('active'); @@ -79,7 +79,7 @@ document.addEventListener('mouseout', (e) => { if (!e.relatedTarget && !e.toElement) { - resetTimer(); + resetEffect(); } }); window.addEventListener('blur', resetTimer);