• Stars
    star
    3,830
  • Rank 11,482 (Top 0.3 %)
  • Language
    JavaScript
  • License
    Other
  • Created almost 2 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A dedicated scratchpad for developers

Heynote

GitHub release (latest SemVer) Build Status

Website: heynote.com

Heynote is a dedicated scratchpad for developers. It functions as a large persistent text buffer where you can write down anything you like. Works great for that Slack message you don't want to accidentally send, a JSON response from an API you're working with, notes from a meeting, your daily to-do list, etc.

The Heynote buffer is divided into blocks, and each block can have its own Language set (e.g. JavaScript, JSON, Markdown, etc.). This gives you syntax highlighting and lets you auto-format that JSON response.

Available for Mac, Windows, and Linux.

Features

  • Persistent text buffer

  • Block-based

  • Syntax highlighting:

    C++, C#, Clojure, CSS, Erlang, Go, Groovy, HTML, Java, JavaScript, JSX, Kotlin, TypeScript, TOML, TSX, JSON, Lezer, Markdown, PHP, Python, Ruby, Rust, Shell, SQL, Swift, XML, YAML

  • Language auto-detection

  • Auto-formatting

  • Math/Calculator mode

  • Currency conversion

  • Multi-cursor editing

  • Dark & Light themes

  • Option to set a global hotkey to show/hide the app

  • Default or Emacs-like key bindings

Installation

Download the appropriate (Mac, Windows or Linux) version from the latest Github release (or from heynote.com). The Windows build is not signed, so you might see some scary warning (I can not justify paying a yearly fee for a certificate just to get rid of that).

Notes on Linux installation

It's been reported (#48) that ChromeOS's Debian VM need the following packages installed to run the Heynote AppImage:

libfuse2
libnss3
libnspr4

Development

To develop Heynote you need Node.js and you should (hopefully) just need to check out the code and then run:

> npm install
> npm run dev

Run Tests

To run the tests:

> npm run test

To run the tests in the Playwright UI:

> npm run test:ui

Contributions

I'm happy to merge contributions that fit my vision for the app. Bug fixes are always welcome.

Math Blocks

Heynote's Math blocks are powered by Math.js expressions. Checkout their documentation to see what syntax, functions, and constants are available.

Accessing the previous result

The variable prev can be used to access the previous result. For example:

128
prev * 2 # 256

Changing how the results of Math blocks are formatted?

You can define a custom format function within the Math block like this:

_format = format # store reference to the built in format
format(x) = _format(x, {notation:"exponential"})

See the Math.js format() function for more info on what's supported.

FAQ

Where is the buffer data stored?

The default paths for the buffer data for the respective OS are:

  • Mac: ~/Library/Application Support/Heynote/buffer.txt
  • Windows: %APPDATA%\Heynote\buffer.txt
  • Linux: ~/.config/Heynote/buffer.txt

From version >=1.5.0, symlinks will be supported and you'll be able to configure the path where buffer.txt is stored.

Can you make a mobile app?

No, at the moment this is out of scope, sorry.

Can you add a feature for naming blocks and/or adding tags? (#44)

Currently, I'm not planning on adding this. The main reason is that it goes against the scratchpadness of the program.

I can totally see the usefulness of such a feature, and it's definitely something that I would expect from a more traditional Notes app. However a large part of Heynote's appeal is it's simplicity, and if that is to remain so, I'm going to have to say no to a lot of actually useful features.

What are the default keyboard shortcuts?

On Mac

⌘ + Enter           Add new block below the current block
βŒ₯ + Enter           Add new block before the current block
⌘ + Shift + Enter   Add new block at the end of the buffer
βŒ₯ + Shift + Enter   Add new block at the start of the buffer
⌘ + βŒ₯ + Enter       Split the current block at cursor position
⌘ + L               Change block language
⌘ + Down            Goto next block
⌘ + Up              Goto previous block
⌘ + A               Select all text in a note block. Press again to select the whole buffer
⌘ + βŒ₯ + Up/Down     Add additional cursor above/below
βŒ₯ + Shift + F       Format block content (works for JSON, JavaScript, HTML, CSS and Markdown)

On Windows and Linux

Ctrl + Enter           Add new block below the current block
Alt + Enter            Add new block before the current block
Ctrl + Shift + Enter   Add new block at the end of the buffer
Alt + Shift + Enter    Add new block at the start of the buffer
Ctrl + Alt + Enter     Split the current block at cursor position
Ctrl + L               Change block language
Ctrl + Down            Goto next block
Ctrl + Up              Goto previous block
Ctrl + A               Select all text in a note block. Press again to select the whole buffer
Ctrl + Alt + Up/Down   Add additional cursor above/below
Alt + Shift + F        Format block content (works for JSON, JavaScript, HTML, CSS and Markdown)
Alt                    Show menu

Thanks!

Heynote is built upon CodeMirror, Vue, Electron, Math.js, Prettier and other great open-source projects.

More Repositories

1

leaflet-areaselect

Leaflet plugin for letting users select an area of the map using a rectangle, and get the bounding box
JavaScript
111
star
2

jquery-titlealert

jQuery plugin for flashing messages in the browser title bar (i.e. chat message alerts)
JavaScript
107
star
3

leaflet-usermarker

Leaflet plugin for plotting a marker representing a user, or multiple users, on a Leaflet map
CSS
76
star
4

postgresql-backup

Docker image that periodically dumps a Postgres database, and uploads it to an Amazon S3 bucket.
Python
49
star
5

jquery-draggable-touch

Make HTML elements draggable using touch events
JavaScript
43
star
6

mms-decoder

PHP class that can decode MMS messages, and thus makes it possible to send MMS-messages to websites.
PHP
21
star
7

locust

Scalable user load testing tool written in Python and gevent
Python
19
star
8

geolocation-throttle

Small JavaScript library for throttling the callbacks from navigator.geolocation.watchPosition
JavaScript
16
star
9

beacon-wordpress

WordPress plugin that provides real-time notifications of comments through the real-time cloud service Beacon Push (http://beaconpush.com/).
PHP
6
star
10

heynote-webapp

Web version of Heynote
5
star
11

mustard

DIY Docker PAAS
Python
4
star
12

leaflet-centermarker

Leaflet Marker that is kept fixed to the center of the map
JavaScript
4
star
13

irccloud-reconnect

Simple Greasemonkey/Webkit Userscript that makes IRCCloud.com continue to try to reconnect even after 10 retries
JavaScript
3
star
14

throttled-http-proxy

Transparently proxies HTTP request to some other pre-defined server with support for throttling the number of concurrent requests
Python
2
star
15

django-mstats

Simple, re-usable, stateless Django app for visualizing and browsing statistics, mainly based on your existing Django models.
Python
2
star
16

twofishes-docker

Twofishes Docker image
1
star
17

dotfiles

My config files
Shell
1
star
18

python-base-docker

Base Docker image for Python projects
Dockerfile
1
star
19

rayter-site

Board Game ranking site for me and my friends & family
Python
1
star
20

heynote-website

heynote.com
SCSS
1
star