@adrianmg/noted 0.0.0-stage → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +105 -2
- package/bin/noted +27 -0
- package/builds.js +19 -0
- package/install.js +37 -0
- package/package.json +52 -4
- package/vendor/darwin/noted +0 -0
- package/vendor/linux-arm64/noted +0 -0
- package/vendor/linux-x64/noted +0 -0
- package/vendor/win32-x64/noted.exe +0 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Adrian Mato <yensamg@github.com>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,106 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<h1 align="center">
|
|
3
|
+
<img src="https://raw.githubusercontent.com/adrianmg/noted/main/docs/logo.png" alt="noted's logo: a floppy disk" width="128">
|
|
4
|
+
<br>
|
|
5
|
+
noted
|
|
6
|
+
</h1>
|
|
7
|
+
<p align="center">Markdown notes in your terminal, as if they ran on MS-DOS.<br>Opens instantly, saves as you type, keeps every note as a plain Markdown file.</p>
|
|
8
|
+
<p align="center">
|
|
9
|
+
<a href="https://www.npmjs.com/package/@adrianmg/noted"><img src="https://img.shields.io/npm/v/%40adrianmg%2Fnoted?label=npm&color=0000aa" alt="npm version" height="18"></a>
|
|
10
|
+
<a href="https://github.com/adrianmg/noted/releases"><img src="https://img.shields.io/github/v/release/adrianmg/noted?label=release&color=00aaaa" alt="Latest release" height="18"></a>
|
|
11
|
+
<a href="https://noted.computer"><img src="https://img.shields.io/badge/website-noted.computer-ffff55" alt="Website: noted.computer" height="18"></a>
|
|
12
|
+
</p>
|
|
13
|
+
</p>
|
|
2
14
|
|
|
3
|
-
|
|
15
|
+
<p align="center">
|
|
16
|
+
<br>
|
|
17
|
+
<img src="https://raw.githubusercontent.com/adrianmg/noted/main/docs/demo.gif" alt="noted starting from the shell: a new note with a task list, ticking a task, the notes list, finding a note as you type, then the Amber theme" width="720">
|
|
18
|
+
<br>
|
|
19
|
+
</p>
|
|
20
|
+
|
|
21
|
+
## Installation
|
|
22
|
+
|
|
23
|
+
```sh
|
|
24
|
+
# npm: macOS, Linux and Windows (Node 18 or newer)
|
|
25
|
+
npm install -g @adrianmg/noted
|
|
26
|
+
|
|
27
|
+
# Homebrew: macOS and Linux
|
|
28
|
+
brew tap adrianmg/noted https://github.com/adrianmg/noted
|
|
29
|
+
brew trust adrianmg/noted
|
|
30
|
+
brew install noted
|
|
31
|
+
|
|
32
|
+
# Install script: checks the build against the release's checksums
|
|
33
|
+
curl -fsSL https://noted.computer/install | sh # macOS, Linux
|
|
34
|
+
irm https://noted.computer/install.ps1 | iex # Windows, in PowerShell
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Usage
|
|
38
|
+
|
|
39
|
+
```sh
|
|
40
|
+
noted # a new note, cursor ready
|
|
41
|
+
noted buy oat milk # a new note that starts with those words
|
|
42
|
+
noted --theme amber # turbo, amber, phosphor, charcoal, lime, midnight,
|
|
43
|
+
# catppuccin, dracula, gruvbox, rosepine, synthwave
|
|
44
|
+
noted --dir ~/Notes # keep notes in another folder this time
|
|
45
|
+
noted --path # print where your notes are
|
|
46
|
+
noted --help # every option
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## What it does
|
|
50
|
+
|
|
51
|
+
noted opens on a new note in about 2.5 ms and saves as you type, so there's
|
|
52
|
+
no save button and nothing to lose. Each note is a plain Markdown file named
|
|
53
|
+
after its first line, in a `Noted` folder in iCloud Drive when it's on, or
|
|
54
|
+
else in Documents, where any editor can open it: `noted --path` prints where,
|
|
55
|
+
and Noted ▸ Notes folder… moves them elsewhere. Markdown is lit as you type,
|
|
56
|
+
finding searches every note as you type, and it all looks like MS-DOS:
|
|
57
|
+
pull-down menus, Norton Commander panes and eleven themes. It runs on macOS,
|
|
58
|
+
Linux and Windows, in any terminal.
|
|
59
|
+
|
|
60
|
+
## Keys
|
|
61
|
+
|
|
62
|
+
| Key | |
|
|
63
|
+
|---|---|
|
|
64
|
+
| `ESC` | Notes list, and back |
|
|
65
|
+
| `⌘F` or `^F` | Find a note, or create one |
|
|
66
|
+
| `^N` | New note |
|
|
67
|
+
| `^T` | Make a task, tick it |
|
|
68
|
+
| `^G` | Insert a table |
|
|
69
|
+
| `^D` | Delete the note (to the Trash; `^Z` puts it back) |
|
|
70
|
+
| `F10` | Menus |
|
|
71
|
+
| `F1` | Every key |
|
|
72
|
+
| `^Q` | Exit |
|
|
73
|
+
|
|
74
|
+
On a PC, read `⌘` as `^` and `⌥` as `ALT`.
|
|
75
|
+
|
|
76
|
+
## Updating
|
|
77
|
+
|
|
78
|
+
```sh
|
|
79
|
+
npm install -g @adrianmg/noted # npm
|
|
80
|
+
brew upgrade noted # Homebrew
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
With the install scripts, run them again.
|
|
84
|
+
|
|
85
|
+
## Why?
|
|
86
|
+
|
|
87
|
+
A thought is gone in seconds, and most notes apps take longer than that to
|
|
88
|
+
open. noted is a terminal away, ready before you finish pressing Enter, and
|
|
89
|
+
leaves you nothing but plain files in a folder you own.
|
|
90
|
+
|
|
91
|
+
Do you want to know more? [Visit noted.computer](https://noted.computer),
|
|
92
|
+
with a live demo and the User's Guide.
|
|
93
|
+
|
|
94
|
+
## Questions? Ideas? Bugs?
|
|
95
|
+
|
|
96
|
+
[Open an issue](https://github.com/adrianmg/noted/issues) or hit me
|
|
97
|
+
up on [Twitter](https://twitter.com/adrianmg).
|
|
98
|
+
|
|
99
|
+
This repository holds noted's releases, its Homebrew formula and this README;
|
|
100
|
+
the npm package, [@adrianmg/noted](https://www.npmjs.com/package/@adrianmg/noted),
|
|
101
|
+
ships the same builds.
|
|
102
|
+
|
|
103
|
+
## License
|
|
104
|
+
|
|
105
|
+
Made by [Adrián Mato](https://adrianmato.com). Available under the terms of
|
|
106
|
+
the [MIT License](https://github.com/adrianmg/noted/blob/main/LICENSE).
|
package/bin/noted
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
// `noted` as npm first links it: a stand-in that starts this system's build with the same arguments, terminal
|
|
4
|
+
// and exit status. On macOS and Linux, install.js then puts the build itself here, so nothing stands between
|
|
5
|
+
// the shell and noted as it starts. This runs on Windows, and where install scripts are turned off.
|
|
6
|
+
|
|
7
|
+
const fs = require('fs');
|
|
8
|
+
const { spawnSync } = require('child_process');
|
|
9
|
+
|
|
10
|
+
let exe;
|
|
11
|
+
try {
|
|
12
|
+
exe = require('../builds.js').build();
|
|
13
|
+
} catch (e) {
|
|
14
|
+
console.error('noted: ' + e.message);
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
if (process.platform !== 'win32') {
|
|
18
|
+
// A package manager may unpack the build without its execute bit.
|
|
19
|
+
try { fs.accessSync(exe, fs.constants.X_OK); } catch (e) { try { fs.chmodSync(exe, 0o755); } catch (e2) { /* reported below */ } }
|
|
20
|
+
}
|
|
21
|
+
const run = spawnSync(exe, process.argv.slice(2), { stdio: 'inherit' });
|
|
22
|
+
if (run.error) {
|
|
23
|
+
console.error('noted: ' + run.error.message);
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
if (run.signal) process.kill(process.pid, run.signal);
|
|
27
|
+
process.exit(run.status === null ? 1 : run.status);
|
package/builds.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
// Which of the package's builds runs on this system. pack.mjs puts them in vendor/, from the release's files.
|
|
3
|
+
|
|
4
|
+
const path = require('path');
|
|
5
|
+
|
|
6
|
+
const BUILDS = {
|
|
7
|
+
'darwin arm64': 'darwin/noted', // one binary for Apple silicon and Intel
|
|
8
|
+
'darwin x64': 'darwin/noted',
|
|
9
|
+
'linux x64': 'linux-x64/noted', // static: any distribution
|
|
10
|
+
'linux arm64': 'linux-arm64/noted',
|
|
11
|
+
'win32 x64': 'win32-x64/noted.exe',
|
|
12
|
+
'win32 arm64': 'win32-x64/noted.exe', // Windows on Arm runs it emulated
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
exports.build = function build() {
|
|
16
|
+
const file = BUILDS[process.platform + ' ' + process.arch];
|
|
17
|
+
if (!file) throw new Error('no build for ' + process.platform + ' on ' + process.arch + ' yet: https://noted.computer');
|
|
18
|
+
return path.join(__dirname, 'vendor', file);
|
|
19
|
+
};
|
package/install.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
// After npm links `noted` to bin/noted (a Node stand-in), on macOS and Linux this puts this system's build in
|
|
3
|
+
// its place: the link then starts noted itself, in a couple of milliseconds, with no Node in between.
|
|
4
|
+
//
|
|
5
|
+
// Only under npm, which links bin/noted as it is. Other package managers may write a shim that runs it with
|
|
6
|
+
// node, which a native file would break; on Windows, npm's .cmd shim does. There the stand-in stays, and it
|
|
7
|
+
// works. Anything going wrong here leaves the stand-in too: an install never fails for this.
|
|
8
|
+
|
|
9
|
+
const fs = require('fs');
|
|
10
|
+
const path = require('path');
|
|
11
|
+
|
|
12
|
+
function main() {
|
|
13
|
+
if (process.platform === 'win32') return;
|
|
14
|
+
if (!/^npm\//.test(process.env.npm_config_user_agent || '')) return;
|
|
15
|
+
let build;
|
|
16
|
+
try {
|
|
17
|
+
build = require('./builds.js').build();
|
|
18
|
+
fs.accessSync(build);
|
|
19
|
+
} catch (e) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const bin = path.join(__dirname, 'bin', 'noted');
|
|
23
|
+
const tmp = bin + '.' + process.pid;
|
|
24
|
+
try {
|
|
25
|
+
// A hard link takes no more room; where there can't be one, a copy.
|
|
26
|
+
try { fs.linkSync(build, tmp); } catch (e) { fs.copyFileSync(build, tmp); }
|
|
27
|
+
fs.chmodSync(tmp, 0o755);
|
|
28
|
+
// Atomic: bin/noted is always one or the other. Run again, it may already be this very file, and
|
|
29
|
+
// rename() leaves both names: the spare one goes.
|
|
30
|
+
fs.renameSync(tmp, bin);
|
|
31
|
+
} catch (e) {
|
|
32
|
+
// The stand-in stays.
|
|
33
|
+
}
|
|
34
|
+
try { fs.unlinkSync(tmp); } catch (e) { /* gone, as it should be */ }
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
main();
|
package/package.json
CHANGED
|
@@ -1,6 +1,54 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adrianmg/noted",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Markdown notes in your terminal, as if they ran on MS-DOS: opens instantly, saves as you type, and keeps each note as a plain .md file.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"notes",
|
|
7
|
+
"markdown",
|
|
8
|
+
"terminal",
|
|
9
|
+
"tui",
|
|
10
|
+
"cli",
|
|
11
|
+
"ms-dos",
|
|
12
|
+
"icloud"
|
|
13
|
+
],
|
|
14
|
+
"homepage": "https://noted.computer",
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/adrianmg/noted.git"
|
|
18
|
+
},
|
|
19
|
+
"bugs": {
|
|
20
|
+
"url": "https://github.com/adrianmg/noted/issues"
|
|
21
|
+
},
|
|
22
|
+
"license": "MIT",
|
|
23
|
+
"author": {
|
|
24
|
+
"name": "Adrián Mato",
|
|
25
|
+
"url": "https://adrianmato.com"
|
|
26
|
+
},
|
|
27
|
+
"bin": {
|
|
28
|
+
"noted": "bin/noted"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"postinstall": "node install.js"
|
|
32
|
+
},
|
|
33
|
+
"files": [
|
|
34
|
+
"bin/",
|
|
35
|
+
"vendor/",
|
|
36
|
+
"builds.js",
|
|
37
|
+
"install.js"
|
|
38
|
+
],
|
|
39
|
+
"os": [
|
|
40
|
+
"darwin",
|
|
41
|
+
"linux",
|
|
42
|
+
"win32"
|
|
43
|
+
],
|
|
44
|
+
"cpu": [
|
|
45
|
+
"x64",
|
|
46
|
+
"arm64"
|
|
47
|
+
],
|
|
48
|
+
"engines": {
|
|
49
|
+
"node": ">=18"
|
|
50
|
+
},
|
|
51
|
+
"publishConfig": {
|
|
52
|
+
"access": "public"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|