feat: Expand Legal Notices and move to bottom of Settings sidebar

- Move Legal Notices to bottom of Settings sidebar (below System)
- Add Third-Party Software Attribution section (Kiwix, Kolibri, Open WebUI, Ollama, CyberChef, FlatNotes)
- Add Privacy Statement (zero telemetry, local-first, no accounts, offline-capable)
- Add Content Disclaimer for third-party content
- Add Medical and Emergency Information Disclaimer
- Add Data Storage section with installation paths

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Chris Sherwood 2026-01-28 09:40:21 -08:00 committed by Jake Turner
parent e8aabfce1e
commit 9a93fc9e04
2 changed files with 140 additions and 25 deletions

View File

@ -21,7 +21,6 @@ const navigation = [
{ name: 'Benchmark', href: '/settings/benchmark', icon: ChartBarIcon, current: false }, { name: 'Benchmark', href: '/settings/benchmark', icon: ChartBarIcon, current: false },
{ name: 'Content Explorer', href: '/settings/zim/remote-explorer', icon: MagnifyingGlassIcon, current: false }, { name: 'Content Explorer', href: '/settings/zim/remote-explorer', icon: MagnifyingGlassIcon, current: false },
{ name: 'Content Manager', href: '/settings/zim', icon: FolderIcon, current: false }, { name: 'Content Manager', href: '/settings/zim', icon: FolderIcon, current: false },
{ name: 'Legal Notices', href: '/settings/legal', icon: IconGavel, current: false },
{ name: 'Maps Manager', href: '/settings/maps', icon: IconMapRoute, current: false }, { name: 'Maps Manager', href: '/settings/maps', icon: IconMapRoute, current: false },
{ {
name: 'Service Logs & Metrics', name: 'Service Logs & Metrics',
@ -36,7 +35,8 @@ const navigation = [
icon: IconArrowBigUpLines, icon: IconArrowBigUpLines,
current: false, current: false,
}, },
{ name: 'System', href: '/settings/system', icon: Cog6ToothIcon, current: true }, { name: 'System', href: '/settings/system', icon: Cog6ToothIcon, current: false },
{ name: 'Legal Notices', href: '/settings/legal', icon: IconGavel, current: false },
] ]
export default function SettingsLayout({ children }: { children: React.ReactNode }) { export default function SettingsLayout({ children }: { children: React.ReactNode }) {

View File

@ -1,32 +1,147 @@
import { Head } from '@inertiajs/react' import { Head } from '@inertiajs/react'
import SettingsLayout from '~/layouts/SettingsLayout' import SettingsLayout from '~/layouts/SettingsLayout'
export default function SettingsPage() { export default function LegalPage() {
return ( return (
<SettingsLayout> <SettingsLayout>
<Head title="Legal Notices" /> <Head title="Legal Notices | Project N.O.M.A.D." />
<div className="xl:pl-72 w-full"> <div className="xl:pl-72 w-full">
<main className="px-12 py-6"> <main className="px-12 py-6 max-w-4xl">
<h1 className="text-4xl font-semibold mb-6">Legal Notices</h1> <h1 className="text-4xl font-semibold mb-8">Legal Notices</h1>
<h2 className="text-2xl font-semibold mb-2">License Agreement & Terms of Use</h2>
<p className="text-gray-900 mb-2">Copyright 2025 Crosstalk Solutions, LLC</p> {/* License Agreement */}
<p className="text-gray-900 mb-2"> <section className="mb-10">
Permission is hereby granted, free of charge, to any person obtaining a copy of this <h2 className="text-2xl font-semibold mb-4">License Agreement</h2>
software and associated documentation files (the Software), to deal in the Software <p className="text-gray-700 mb-3">Copyright 2025 Crosstalk Solutions, LLC</p>
without restriction, including without limitation the rights to use, copy, modify, <p className="text-gray-700 mb-3">
merge, publish, distribute, sublicense, and/or sell copies of the Software, and to Permission is hereby granted, free of charge, to any person obtaining a copy of this
permit persons to whom the Software is furnished to do so, subject to the following software and associated documentation files (the &quot;Software&quot;), to deal in the Software
conditions: The above copyright notice and this permission notice shall be included in without restriction, including without limitation the rights to use, copy, modify,
all copies or substantial portions of the Software. merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
</p> permit persons to whom the Software is furnished to do so, subject to the following
<p className="text-gray-900 mb-2"> conditions: The above copyright notice and this permission notice shall be included in
THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, all copies or substantial portions of the Software.
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR </p>
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE <p className="text-gray-700">
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
OTHER DEALINGS IN THE SOFTWARE. PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
</p> 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.
</p>
</section>
{/* Third-Party Software */}
<section className="mb-10">
<h2 className="text-2xl font-semibold mb-4">Third-Party Software Attribution</h2>
<p className="text-gray-700 mb-4">
Project N.O.M.A.D. integrates the following open source projects. We are grateful to
their developers and communities:
</p>
<ul className="space-y-3 text-gray-700">
<li>
<strong>Kiwix</strong> - Offline Wikipedia and content reader (GPL-3.0 License)
<br />
<a href="https://kiwix.org" target="_blank" rel="noopener noreferrer" className="text-blue-600 hover:underline">https://kiwix.org</a>
</li>
<li>
<strong>Kolibri</strong> - Offline learning platform by Learning Equality (MIT License)
<br />
<a href="https://learningequality.org/kolibri" target="_blank" rel="noopener noreferrer" className="text-blue-600 hover:underline">https://learningequality.org/kolibri</a>
</li>
<li>
<strong>Open WebUI</strong> - Web interface for local AI models (MIT License)
<br />
<a href="https://openwebui.com" target="_blank" rel="noopener noreferrer" className="text-blue-600 hover:underline">https://openwebui.com</a>
</li>
<li>
<strong>Ollama</strong> - Local large language model runtime (MIT License)
<br />
<a href="https://ollama.com" target="_blank" rel="noopener noreferrer" className="text-blue-600 hover:underline">https://ollama.com</a>
</li>
<li>
<strong>CyberChef</strong> - Data analysis and encoding toolkit by GCHQ (Apache 2.0 License)
<br />
<a href="https://github.com/gchq/CyberChef" target="_blank" rel="noopener noreferrer" className="text-blue-600 hover:underline">https://github.com/gchq/CyberChef</a>
</li>
<li>
<strong>FlatNotes</strong> - Self-hosted note-taking application (MIT License)
<br />
<a href="https://github.com/dullage/flatnotes" target="_blank" rel="noopener noreferrer" className="text-blue-600 hover:underline">https://github.com/dullage/flatnotes</a>
</li>
</ul>
</section>
{/* Privacy Statement */}
<section className="mb-10">
<h2 className="text-2xl font-semibold mb-4">Privacy Statement</h2>
<p className="text-gray-700 mb-3">
Project N.O.M.A.D. is designed with privacy as a core principle:
</p>
<ul className="list-disc list-inside space-y-2 text-gray-700">
<li><strong>Zero Telemetry:</strong> N.O.M.A.D. does not collect, transmit, or store any usage data, analytics, or telemetry.</li>
<li><strong>Local-First:</strong> All your data, downloaded content, AI conversations, and notes remain on your device.</li>
<li><strong>No Accounts Required:</strong> N.O.M.A.D. operates without user accounts or authentication by default.</li>
<li><strong>Network Optional:</strong> An internet connection is only required to download content or updates. All installed features work fully offline.</li>
</ul>
</section>
{/* Content Disclaimer */}
<section className="mb-10">
<h2 className="text-2xl font-semibold mb-4">Content Disclaimer</h2>
<p className="text-gray-700 mb-3">
Project N.O.M.A.D. provides tools to download and access content from third-party sources
including Wikipedia, Wikibooks, medical references, educational platforms, and other
publicly available resources.
</p>
<p className="text-gray-700 mb-3">
Crosstalk Solutions, LLC does not create, control, verify, or guarantee the accuracy,
completeness, or reliability of any third-party content. The inclusion of any content
does not constitute an endorsement.
</p>
<p className="text-gray-700">
Users are responsible for evaluating the appropriateness and accuracy of any content
they download and use.
</p>
</section>
{/* Medical Disclaimer */}
<section className="mb-10">
<h2 className="text-2xl font-semibold mb-4">Medical and Emergency Information Disclaimer</h2>
<p className="text-gray-700 mb-3">
Some content available through N.O.M.A.D. includes medical references, first aid guides,
and emergency preparedness information. This content is provided for general
informational purposes only.
</p>
<p className="text-gray-700 mb-3 font-semibold">
This information is NOT a substitute for professional medical advice, diagnosis, or treatment.
</p>
<ul className="list-disc list-inside space-y-2 text-gray-700 mb-3">
<li>Always seek the advice of qualified health providers with questions about medical conditions.</li>
<li>Never disregard professional medical advice or delay seeking it because of something you read in offline content.</li>
<li>In a medical emergency, call emergency services immediately if available.</li>
<li>Medical information may become outdated. Verify critical information with current professional sources when possible.</li>
</ul>
</section>
{/* Data Storage Notice */}
<section className="mb-10">
<h2 className="text-2xl font-semibold mb-4">Data Storage</h2>
<p className="text-gray-700 mb-3">
All data associated with Project N.O.M.A.D. is stored locally on your device:
</p>
<ul className="list-disc list-inside space-y-2 text-gray-700">
<li><strong>Installation Directory:</strong> /opt/project-nomad</li>
<li><strong>Downloaded Content:</strong> /opt/project-nomad/storage</li>
<li><strong>Application Data:</strong> Stored in Docker volumes on your local system</li>
</ul>
<p className="text-gray-700 mt-3">
You maintain full control over your data. Uninstalling N.O.M.A.D. or deleting these
directories will permanently remove all associated data.
</p>
</section>
</main> </main>
</div> </div>
</SettingsLayout> </SettingsLayout>