From f09c9447cab33d1803af5e9dc91e60a905824769 Mon Sep 17 00:00:00 2001 From: jamubc <150970140+jamubc@users.noreply.github.com> Date: Wed, 30 Sep 2026 17:17:03 -0700 Subject: [PATCH] chore: adopt the strict source license and the Jam-Sw EULA InstantNotes may be sold, so its source is readable but not reusable, business use needs a paid license, and the installer and a first-run gate ask every user to agree. Drops the stray MIT field from package.json. --- LICENSE.md | 109 +++++++++++++++++ README.md | 8 ++ package.json | 2 +- src-tauri/Cargo.toml | 1 + src-tauri/installer/EULA.txt | 87 ++++++++++++++ src-tauri/installer/dmg-background.png | Bin 0 -> 4530 bytes src-tauri/installer/nsis-header.bmp | Bin 0 -> 25818 bytes src-tauri/installer/nsis-sidebar.bmp | Bin 0 -> 154542 bytes .../installer/nsis-uninstaller-header.bmp | Bin 0 -> 25818 bytes src-tauri/tauri.conf.json | 32 ++++- src/lib/EulaGate.svelte | 110 ++++++++++++++++++ src/routes/+layout.svelte | 5 +- 12 files changed, 350 insertions(+), 4 deletions(-) create mode 100644 LICENSE.md create mode 100644 src-tauri/installer/EULA.txt create mode 100644 src-tauri/installer/dmg-background.png create mode 100644 src-tauri/installer/nsis-header.bmp create mode 100644 src-tauri/installer/nsis-sidebar.bmp create mode 100644 src-tauri/installer/nsis-uninstaller-header.bmp create mode 100644 src/lib/EulaGate.svelte diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..499e4fd --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,109 @@ +Required Notice: Copyright Jam-Sw (https://github.com/Jam-Sw) + +Required Notice: Uses not permitted below need a commercial license from +Jam-Sw. Contact jam.sw.org@gmail.com. + +# PolyForm Strict License 1.0.0 + + + +## Acceptance + +In order to get any license under these terms, you must agree +to them as both strict obligations and conditions to all +your licenses. + +## Copyright License + +The licensor grants you a copyright license for the software +to do everything you might do with the software that would +otherwise infringe the licensor's copyright in it for any +permitted purpose, other than distributing the software or +making changes or new works based on the software. + +## Patent License + +The licensor grants you a patent license for the software that +covers patent claims the licensor can license, or becomes able +to license, that you would infringe by using the software. + +## Noncommercial Purposes + +Any noncommercial purpose is a permitted purpose. + +## Personal Uses + +Personal use for research, experiment, and testing for +the benefit of public knowledge, personal study, private +entertainment, hobby projects, amateur pursuits, or religious +observance, without any anticipated commercial application, +is use for a permitted purpose. + +## Noncommercial Organizations + +Use by any charitable organization, educational institution, +public research organization, public safety or health +organization, environmental protection organization, +or government institution is use for a permitted purpose +regardless of the source of funding or obligations resulting +from the funding. + +## Fair Use + +You may have "fair use" rights for the software under the +law. These terms do not limit them. + +## No Other Rights + +These terms do not allow you to sublicense or transfer any of +your licenses to anyone else, or prevent the licensor from +granting licenses to anyone else. These terms do not imply +any other licenses. + +## Patent Defense + +If you make any written claim that the software infringes or +contributes to infringement of any patent, your patent license +for the software granted under these terms ends immediately. If +your company makes such a claim, your patent license ends +immediately for work on behalf of your company. + +## Violations + +The first time you are notified in writing that you have +violated any of these terms, or done anything with the software +not covered by your licenses, your licenses can nonetheless +continue if you come into full compliance with these terms, +and take practical steps to correct past violations, within +32 days of receiving notice. Otherwise, all your licenses +end immediately. + +## No Liability + +***As far as the law allows, the software comes as is, without +any warranty or condition, and the licensor will not be liable +to you for any damages arising out of these terms or the use +or nature of the software, under any kind of legal claim.*** + +## Definitions + +The **licensor** is the individual or entity offering these +terms, and the **software** is the software the licensor makes +available under these terms. + +**You** refers to the individual or entity agreeing to these +terms. + +**Your company** is any legal entity, sole proprietorship, +or other kind of organization that you work for, plus all +organizations that have control over, are under the control of, +or are under common control with that organization. **Control** +means ownership of substantially all the assets of an entity, +or the power to direct its management and policies by vote, +contract, or otherwise. Control can be direct or indirect. + +**Your licenses** are all the licenses granted to you for the +software under these terms. + +**Use** means anything you do with the software requiring one +of your licenses. diff --git a/README.md b/README.md index 0458642..2839da0 100644 --- a/README.md +++ b/README.md @@ -100,3 +100,11 @@ This is a private project developed by the jam-sw team. - All changes land via pull request into `main` - Commit subjects stay short and concrete; bodies explain what changed in one or two sentences - Core behavior is covered with Rust tests against SQLite, frontend utilities with Vitest, and components must pass `svelte-check` + +## License + +InstantNotes is source-available under the [PolyForm Strict License 1.0.0](LICENSE.md). +You can read the code and use the app for personal, noncommercial purposes. Using it for +a business or paid work, redistributing it, or publishing modified versions needs a +commercial license from Jam-Sw: write to jam.sw.org@gmail.com. Installing or using the +app means agreeing to the [end user license agreement](src-tauri/installer/EULA.txt). diff --git a/package.json b/package.json index 2b72163..40ce85b 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "tauri:dev": "node scripts/tauri-dev.mjs", "bump": "node scripts/bump-version.mjs" }, - "license": "MIT", + "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "@codemirror/commands": "^6", "@codemirror/lang-markdown": "^6.5.0", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index cfd83ca..9c1b8bf 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -3,6 +3,7 @@ members = ["core"] resolver = "2" [package] +license = "PolyForm-Strict-1.0.0" name = "instantnotes" version = "0.8.0" description = "InstantNotes — instant capture, organized knowledge" diff --git a/src-tauri/installer/EULA.txt b/src-tauri/installer/EULA.txt new file mode 100644 index 0000000..cc70aa7 --- /dev/null +++ b/src-tauri/installer/EULA.txt @@ -0,0 +1,87 @@ +InstantNotes END USER LICENSE AGREEMENT +Jam-Sw. EULA version 2026-09-30. + +Read this agreement before installing or using InstantNotes (the "Software"). +By installing, copying, or using the Software you agree to these terms. If you +do not agree, do not install or use the Software. + +1. WHO WE ARE + The Software is developed and distributed by Jam-Sw ("we", "us"). + Contact: jam.sw.org@gmail.com + +2. FREE LICENSE + We grant you a non-exclusive, non-transferable license to install and use + the Software on devices you own or control, at no charge, for these uses: + a. personal, noncommercial use; and + b. use by charities, schools, and public research or government bodies. + Use by or for a business, for paid work, or to make money is not free. + +3. COMMERCIAL LICENSE + Any other use needs a commercial license. You get one by buying it from + Jam-Sw or by written agreement with us. A commercial license covers the + number of users or devices stated at purchase and is otherwise subject to + this agreement. If you have been using the Software without the license + your use needs, you have 30 days after we notify you to buy one or stop. + +4. WHAT YOU MAY NOT DO + Unless a written agreement with Jam-Sw says otherwise, you may not: + a. sell, rent, lease, or sublicense the Software; + b. redistribute the Software, or a modified version, for commercial + purposes; + c. remove or alter any copyright, trademark, or Required Notice; + d. use the Jam-Sw name, logos, or the Software's name to endorse or + promote a product or service. + +5. SOURCE CODE + The source code is published under the PolyForm Strict License 1.0.0: + https://polyformproject.org/licenses/strict/1.0.0 + That license governs the source; this agreement governs the installed + Software. Nothing here narrows the rights that license grants you. + +6. YOUR DATA + The Software stores your data on your device. We do not collect it. The + Software contacts our servers only to check for updates, and the only + information sent is what an update check needs (app version and platform). + Third-party components named in the Software's notices may send anonymous + usage counts to their makers; they never send your content. + +7. OWNERSHIP + The Software is licensed, not sold. Jam-Sw keeps all rights, title, and + interest in it, including all intellectual property rights. + +8. UPDATES + The Software may check for and install updates. Updates are covered by this + agreement unless they come with their own terms. + +9. THIRD-PARTY COMPONENTS + The Software includes open source components under their own licenses. + Their notices ship with the Software, and those licenses govern those + components. + +10. NO WARRANTY + THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, AND NON-INFRINGEMENT. YOU USE IT AT YOUR OWN RISK. + +11. LIMITATION OF LIABILITY + TO THE FULLEST EXTENT PERMITTED BY LAW, JAM-SW WILL NOT BE LIABLE FOR ANY + INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES, OR ANY + LOSS OF DATA, PROFITS, OR BUSINESS, ARISING FROM THE SOFTWARE OR THIS + AGREEMENT. IF WE ARE LIABLE FOR ANYTHING, OUR TOTAL LIABILITY IS LIMITED + TO THE AMOUNT YOU PAID US FOR THE SOFTWARE IN THE 12 MONTHS BEFORE THE + CLAIM. + +12. TERMINATION + This license ends automatically if you breach it. When it ends you must + stop using the Software and delete all copies. Sections 7, 10, 11, and 13 + survive termination. + +13. GENERAL + This agreement, plus any commercial license you buy, is the entire + agreement between you and Jam-Sw about the Software. If any part is + unenforceable, the rest stays in effect. Not enforcing a term is not a + waiver of it. This agreement is governed by the laws of the Province of Ontario, Canada, + without regard to conflict of law rules. Consumer protection laws that + apply to you still apply. + +Copyright Jam-Sw. All rights reserved except as expressly granted above. diff --git a/src-tauri/installer/dmg-background.png b/src-tauri/installer/dmg-background.png new file mode 100644 index 0000000000000000000000000000000000000000..5a0920436e8a5951a94dba1da255efdd823fac0f GIT binary patch literal 4530 zcmeAS@N?(olHy`uVBq!ia0y~yV4A|fz&L?}2`DoEO8NsJ#aJBV?!>U}oXkrgry@1N zGtJkRK?}&{U|?aCVqgU+0b)BwX*k=BQGTmUgMbGRgY-aX<^_yU z)j+WYOfc0o<1XD(&#NVbVl=a}yF?M!SR10xd)hrkPtIesCYoB|3C4GfL?348uBf`vOc zCEiCQJ`w^6Gd_OH&H+;3;B%njIG6Bruuh45dypIxOA^yD>#!L+fMzK;9H{sW)~+BR zY;bSmp(CnbCC6^_L(HGi@Uc%+O%JTZ;9ebAJI4{0p7J#Yg(0EZmrTi7yEMjyfCn%(rm#C~LVqha7U4Pk_UJaQFdfq+X{0 literal 0 HcmV?d00001 diff --git a/src-tauri/installer/nsis-sidebar.bmp b/src-tauri/installer/nsis-sidebar.bmp new file mode 100644 index 0000000000000000000000000000000000000000..bcbc1c66b2d5a16433c1641ff5b1498bac21e6b8 GIT binary patch literal 154542 zcmeIuu?c`c3y*Pn|rM(ll$PHxejK&*7UdRt2>E3ZZR~KJxnKg4~_7YKI z$}OVif9Rv79da!5s0k1tK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs P0RjXF5FkK+z;6Uz9Jpkb literal 0 HcmV?d00001 diff --git a/src-tauri/installer/nsis-uninstaller-header.bmp b/src-tauri/installer/nsis-uninstaller-header.bmp new file mode 100644 index 0000000000000000000000000000000000000000..56875fc824111c416131507f37aefcf8d5636940 GIT binary patch literal 25818 zcmeI!u?a#!5CqUOHWWlK7b_4<&F#XPtiY(0EZmrTi7yEMjyfCn%(rm#C~LVqha7U4Pk_UJaQFdfq+X{0 literal 0 HcmV?d00001 diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 4d8ff1e..40b3461 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -44,7 +44,9 @@ "csp": "default-src 'self'; img-src 'self' data: asset: http://asset.localhost; style-src 'self' 'unsafe-inline'; connect-src ipc: http://ipc.localhost", "assetProtocol": { "enable": true, - "scope": ["$APPDATA/attachments/**"] + "scope": [ + "$APPDATA/attachments/**" + ] } } }, @@ -66,7 +68,33 @@ "createUpdaterArtifacts": true, "macOS": { "signingIdentity": "-", - "minimumSystemVersion": "11.0" + "minimumSystemVersion": "11.0", + "dmg": { + "background": "installer/dmg-background.png", + "windowSize": { + "width": 660, + "height": 400 + }, + "appPosition": { + "x": 180, + "y": 170 + }, + "applicationFolderPosition": { + "x": 480, + "y": 170 + } + } + }, + "licenseFile": "installer/EULA.txt", + "windows": { + "nsis": { + "installerIcon": "icons/icon.ico", + "uninstallerIcon": "icons/icon.ico", + "headerImage": "installer/nsis-header.bmp", + "uninstallerHeaderImage": "installer/nsis-uninstaller-header.bmp", + "sidebarImage": "installer/nsis-sidebar.bmp", + "installMode": "currentUser" + } } }, "plugins": { diff --git a/src/lib/EulaGate.svelte b/src/lib/EulaGate.svelte new file mode 100644 index 0000000..39d98b8 --- /dev/null +++ b/src/lib/EulaGate.svelte @@ -0,0 +1,110 @@ + + +{#if accepted} + {@render children?.()} +{:else} + +{/if} + + diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index dc1ef43..732f1ba 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,6 +1,7 @@ -{@render children()} + + {@render children()} + {#if import.meta.env.DEV}
dev · {buildTag}