inmem-memo 1.2.0 → 1.3.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/README.md +44 -27
- package/bin/cli.js +3 -3
- package/package.json +9 -4
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# ⚡
|
|
1
|
+
# ⚡ inmem-memo
|
|
2
2
|
|
|
3
3
|
<div align="center">
|
|
4
4
|
|
|
5
|
-
<img src="src/assets/icon.png" width="128" height="128" alt="
|
|
5
|
+
<img src="src/assets/icon.png" width="128" height="128" alt="inmem-memo Icon" />
|
|
6
6
|
|
|
7
7
|
### Ultra-Fast, Pure In-Memory Scratchpad Memo Application
|
|
8
8
|
**Instantly launchable and installable via npm / npx across Windows, macOS, and Linux**
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
[](https://www.npmjs.com/package/inmem-memo)
|
|
11
11
|
[](https://v2.tauri.app/)
|
|
12
12
|
[](https://react.dev/)
|
|
13
|
-
[](https://github.com/)
|
|
13
|
+
[](https://github.com/jakelizzI/inmem-memo)
|
|
14
14
|
[](LICENSE)
|
|
15
15
|
|
|
16
16
|
<br />
|
|
@@ -57,15 +57,16 @@ inmem-memo
|
|
|
57
57
|
|
|
58
58
|
During development and daily work, we constantly need a temporary place to paste and inspect JSON payloads, perform quick regex string replacements, or jot down transient notes.
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
inmem-memo eliminates traditional note management overhead—such as title editing, file naming, folder hierarchies, and disk indexing—in favor of **instant startup speed, pure in-memory security, and ultra-low resource usage** powered by **Tauri v2 + Rust**.
|
|
61
61
|
|
|
62
62
|
---
|
|
63
63
|
|
|
64
64
|
## 🌟 Key Features
|
|
65
65
|
|
|
66
66
|
### 1. 🛡️ Pure In-Memory Security Policy
|
|
67
|
-
- **Zero Disk Persistence for Memo Text**: Note text is kept
|
|
67
|
+
- **Zero Disk Persistence for Memo Text**: Note text is kept strictly in RAM. It is never written to disk, databases, or `localStorage`.
|
|
68
68
|
- **Complete Erasure on Process Exit**: Terminating the application (via "Quit App" in settings or tray menu) immediately releases all allocated memory back to the OS.
|
|
69
|
+
- **Robust macOS & Multi-Platform Process Termination**: Guaranteed process exit via `std::process::exit(0)` ensuring full memory cleanup across Windows, macOS, and Linux.
|
|
69
70
|
- **Unload Guard**: Built-in confirmation prompt to prevent accidental data loss while typing.
|
|
70
71
|
|
|
71
72
|
### 2. ⚡ Right Quick-Action Toolbar (JSON Format & Regex Replacements)
|
|
@@ -73,7 +74,8 @@ InMem Scratchpad eliminates traditional note management overhead—such as title
|
|
|
73
74
|
- Permanently pinned at the top. Instantly prettifies unformatted JSON payloads with clean 2-space indentation.
|
|
74
75
|
- **Custom Regular Expression Actions**:
|
|
75
76
|
- Add, edit, test, and save frequently used regex replacement rules via the Settings modal.
|
|
76
|
-
- **
|
|
77
|
+
- **Interactive Regex Flags Cheat Sheet & Help Guide**: Clear explanations for `g` (global), `m` (multiline), `i` (case-insensitive), and `s` (dot-all) with one-click quick chips (`gm`, `g`, `gi`).
|
|
78
|
+
- **Multiline Real-Time Testing Sandbox**: 2-pane interactive preview (input text ➔ live replacement output) with sample preset buttons to verify pattern replacements across multiple lines.
|
|
77
79
|
- **One-Click Presets**:
|
|
78
80
|
- "Clean Empty Lines" (`^\s*$\n` ➔ `""`)
|
|
79
81
|
- "Trim Trailing Spaces" (`[ \t]+$` ➔ `""`)
|
|
@@ -81,33 +83,43 @@ InMem Scratchpad eliminates traditional note management overhead—such as title
|
|
|
81
83
|
- "Strip HTML Tags" (`<[^>]+>` ➔ `""`)
|
|
82
84
|
- "Collapse Multiple Spaces" (`[ \t]+` ➔ `" "`)
|
|
83
85
|
|
|
84
|
-
### 3.
|
|
86
|
+
### 3. 📝 Advanced Lightweight Editor (Line Numbers, Syntax Highlighting & Code Folding)
|
|
87
|
+
- **Line Numbers (ON / OFF Toggle)**:
|
|
88
|
+
- Clean line number gutter along the left edge with active line highlighting. Toggleable anytime in Settings.
|
|
89
|
+
- **Custom Syntax Highlighting (Zero Bloat)**:
|
|
90
|
+
- Native, ultra-light regex-based tokenization for **JSON, YAML, JavaScript, and Markdown** tailored to all 3 themes.
|
|
91
|
+
- Automatic language detection with a real-time status badge (`JSON`, `YAML`, `JS`, `Markdown`, `Plain`) in the status bar.
|
|
92
|
+
- **Inline Code & Block Folding**:
|
|
93
|
+
- Fold and expand JSON objects `{...}`, arrays `[...]`, and YAML indentation blocks directly in the editor with smooth fold indicators (▼ / ▶).
|
|
94
|
+
- **Tab Width & Indent Unit Configuration**:
|
|
95
|
+
- Choose between 2-space and 4-space indentation with full `Tab` key insertion support.
|
|
96
|
+
|
|
97
|
+
### 4. 🎨 Modern UI & 3 Themes (Midnight / OLED / Clean Light)
|
|
98
|
+
- **3 Curated Color Themes**:
|
|
99
|
+
- **Midnight Dark**: Deep gradient dark mode for night work.
|
|
100
|
+
- **OLED Pure Black**: High-contrast, power-saving true black mode.
|
|
101
|
+
- **Clean Light**: Crisp, bright light mode with soft shadows and refined readability.
|
|
102
|
+
- **Interactive Font Resizing**:
|
|
103
|
+
- Adjust editor font size via numerical input or interactively via **`Ctrl + MouseWheel`** (Mac: `Cmd + Wheel`) with smooth silent zooming.
|
|
104
|
+
- **Live Markdown Preview**: Toggle between raw text editing and sanitized Markdown rendering with one click (sanitized with DOMPurify).
|
|
105
|
+
- **Status Bar & UI Version Display**: Real-time character, word, line count metrics, detected language badge, and bottom-left version badge (`v1.3.0`).
|
|
106
|
+
|
|
107
|
+
### 5. 📑 2-Column Sidebar Settings Modal
|
|
108
|
+
- Redesigned from horizontal tabs into a **macOS / VS Code style 2-column sidebar navigation** layout.
|
|
109
|
+
- Easily customize shortcuts, regex actions, appearance themes, font sizes, editor preferences (Line Numbers, Folding, Highlighting), and process termination in dedicated sections.
|
|
110
|
+
|
|
111
|
+
### 6. ↩️ Full `Ctrl + Z` (Undo) & `Ctrl + Y` (Redo) History Stack
|
|
85
112
|
- Even after executing batch transformations (JSON formatting or regex replacements), pressing **`Ctrl + Z` (Mac: `Cmd + Z`)** instantly restores the exact previous text state.
|
|
86
113
|
- Redo anytime using **`Ctrl + Y`** or **`Ctrl + Shift + Z` (Mac: `Cmd + Shift + Z`)**.
|
|
87
114
|
- Visual Undo/Redo icon buttons located directly in the header bar.
|
|
88
115
|
|
|
89
|
-
###
|
|
116
|
+
### 7. ⌨️ Global Shortcut & System Tray Residency
|
|
90
117
|
- **Background Tray Standby**: Clicking the window close button (`×`) minimizes the app directly to the system tray (Windows) or menu bar (macOS).
|
|
91
118
|
- **Instant Hotkey Summon**:
|
|
92
119
|
- Press the global hotkey from any active window (IDE, browser, terminal) to instantly toggle the scratchpad on top of your screen.
|
|
93
120
|
- Default: `Ctrl + Shift + M` (Mac: `Cmd + Shift + M`).
|
|
94
121
|
- Customizable in Settings with an interactive key recorder.
|
|
95
122
|
|
|
96
|
-
### 5. ⚙️ Local Settings Persistence & Complete App Exit
|
|
97
|
-
- While memo text remains strictly in-memory, your **user preferences are safely persisted to `localStorage`**:
|
|
98
|
-
- Global shortcut key
|
|
99
|
-
- Custom regex action library
|
|
100
|
-
- Theme choice (Midnight Dark / OLED Pure Black)
|
|
101
|
-
- Editor preferences (Font size, Tab width, Word wrap)
|
|
102
|
-
- **Complete Application Exit**:
|
|
103
|
-
- Easily terminate the background tray process and completely free memory with the "Quit App" button in Settings.
|
|
104
|
-
|
|
105
|
-
### 6. 🎨 Modern Dark Glassmorphism UI & Markdown Preview
|
|
106
|
-
- **Aesthetic Dark Mode**: Curated color palette with fluid micro-animations.
|
|
107
|
-
- **Live Markdown Preview**: Toggle between raw text editing and formatted Markdown rendering with one click.
|
|
108
|
-
- **Live Statistics**: Status bar displaying real-time character, word, and line counts.
|
|
109
|
-
- **Quick Operations**: Copy all (`Copy`), export file (`Export .md`), and clear (`Clear`).
|
|
110
|
-
|
|
111
123
|
---
|
|
112
124
|
|
|
113
125
|
## ⌨️ Keyboard Shortcuts
|
|
@@ -115,6 +127,7 @@ InMem Scratchpad eliminates traditional note management overhead—such as title
|
|
|
115
127
|
| Shortcut | Action |
|
|
116
128
|
|---|---|
|
|
117
129
|
| `Ctrl + Shift + M` (Mac: `Cmd + Shift + M`) | **Global Summon** (Toggle window visibility from anywhere) |
|
|
130
|
+
| `Ctrl + MouseWheel` (Mac: `Cmd + Wheel`) | **Interactive Font Resize** (Zoom editor text seamlessly) |
|
|
118
131
|
| `Ctrl + Z` (Mac: `Cmd + Z`) | **Undo** (Revert text changes, JSON formatting, or regex replacements) |
|
|
119
132
|
| `Ctrl + Y` / `Ctrl + Shift + Z` | **Redo** (Re-apply reverted changes) |
|
|
120
133
|
| `Tab` | Insert indentation (2 or 4 spaces) |
|
|
@@ -128,17 +141,21 @@ InMem Scratchpad eliminates traditional note management overhead—such as title
|
|
|
128
141
|
- `tauri-plugin-global-shortcut`: System-wide hotkey listener
|
|
129
142
|
- `tray-icon`: System tray / menu bar residency
|
|
130
143
|
- `include_image!`: Native embedded icon binaries
|
|
131
|
-
- **Frontend**: [React 18](https://react.dev/) + [Vite 5](https://vitejs.dev/) + [Lucide Icons](https://lucide.dev/)
|
|
144
|
+
- **Frontend**: [React 18](https://react.dev/) + [Vite 5](https://vitejs.dev/) + [Lucide Icons](https://lucide.dev/) + [DOMPurify](https://github.com/cure53/DOMPurify)
|
|
132
145
|
- **Styling**: Vanilla CSS (Modern CSS Variables, Glassmorphism, Responsive Grid/Flexbox)
|
|
133
146
|
- **Distribution**:
|
|
134
|
-
- npm: Automated platform-resolving CLI runner (`inmem-memo`)
|
|
135
|
-
- GitHub Actions: Multi-platform automated builds for Windows (`.exe`), macOS (`.dmg`), and Linux (`.AppImage`)
|
|
147
|
+
- npm: Automated platform-resolving CLI runner (`inmem-memo`) with Sigstore Provenance
|
|
148
|
+
- GitHub Actions: Multi-platform automated builds for Windows (`.exe`, `.msi`), macOS (`.dmg`), and Linux (`.AppImage`, `.deb`, `.rpm`)
|
|
136
149
|
|
|
137
150
|
---
|
|
138
151
|
|
|
139
152
|
## 💻 Local Development & Building from Source
|
|
140
153
|
|
|
141
154
|
```powershell
|
|
155
|
+
# Clone repository
|
|
156
|
+
git clone https://github.com/jakelizzI/inmem-memo.git
|
|
157
|
+
cd inmem-memo
|
|
158
|
+
|
|
142
159
|
# Install frontend dependencies
|
|
143
160
|
npm install
|
|
144
161
|
|
|
@@ -156,4 +173,4 @@ npm run tauri build
|
|
|
156
173
|
|
|
157
174
|
## 📄 License
|
|
158
175
|
|
|
159
|
-
[MIT License](LICENSE) © 2026
|
|
176
|
+
[MIT License](LICENSE) © 2026 [jakelizzI](https://github.com/jakelizzI/inmem-memo)
|
package/bin/cli.js
CHANGED
|
@@ -16,7 +16,7 @@ const packageJson = JSON.parse(
|
|
|
16
16
|
);
|
|
17
17
|
|
|
18
18
|
const VERSION = packageJson.version;
|
|
19
|
-
const REPO = 'jakelizzI/
|
|
19
|
+
const REPO = 'jakelizzI/inmem-memo';
|
|
20
20
|
const CACHE_DIR = path.join(os.homedir(), '.inmem-memo', `v${VERSION}`);
|
|
21
21
|
|
|
22
22
|
function fetchJson(url) {
|
|
@@ -125,7 +125,7 @@ async function main() {
|
|
|
125
125
|
const localBinaryPath = path.join(CACHE_DIR, executable);
|
|
126
126
|
|
|
127
127
|
if (!fs.existsSync(localBinaryPath)) {
|
|
128
|
-
console.log(`⚡ Setting up
|
|
128
|
+
console.log(`⚡ Setting up inmem-memo (v${VERSION})...`);
|
|
129
129
|
console.log(`📥 Downloading native package from GitHub Releases...`);
|
|
130
130
|
|
|
131
131
|
await downloadFile(downloadUrl, localBinaryPath);
|
|
@@ -136,7 +136,7 @@ async function main() {
|
|
|
136
136
|
console.log('✅ Setup complete!');
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
-
console.log('🚀 Launching
|
|
139
|
+
console.log('🚀 Launching inmem-memo...');
|
|
140
140
|
|
|
141
141
|
if (process.platform === 'win32') {
|
|
142
142
|
const child = spawn(localBinaryPath, [], { detached: true, stdio: 'ignore' });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "inmem-memo",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Ultra-Fast In-Memory Scratchpad Memo Application for Windows, macOS, and Linux",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
],
|
|
14
14
|
"repository": {
|
|
15
15
|
"type": "git",
|
|
16
|
-
"url": "git+https://github.com/jakelizzI/
|
|
16
|
+
"url": "git+https://github.com/jakelizzI/inmem-memo.git"
|
|
17
17
|
},
|
|
18
|
-
"homepage": "https://github.com/jakelizzI/
|
|
18
|
+
"homepage": "https://github.com/jakelizzI/inmem-memo#readme",
|
|
19
19
|
"bugs": {
|
|
20
|
-
"url": "https://github.com/jakelizzI/
|
|
20
|
+
"url": "https://github.com/jakelizzI/inmem-memo/issues"
|
|
21
21
|
},
|
|
22
22
|
"keywords": [
|
|
23
23
|
"scratchpad",
|
|
@@ -41,6 +41,11 @@
|
|
|
41
41
|
"tauri": "tauri"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
+
"@codemirror/commands": "^6.10.4",
|
|
45
|
+
"@codemirror/language": "^6.12.4",
|
|
46
|
+
"@codemirror/state": "^6.7.1",
|
|
47
|
+
"@codemirror/view": "^6.43.8",
|
|
48
|
+
"@lezer/highlight": "^1.2.3",
|
|
44
49
|
"@tauri-apps/api": "^2.0.0",
|
|
45
50
|
"@tauri-apps/plugin-global-shortcut": "^2.0.0",
|
|
46
51
|
"dompurify": "^3.4.13",
|