Skip to content

ASCII pixel art editor for the terminal

CLI & Terminal

Terminal‑based ASCII pixel art editor that uses Braille characters for rendering

Go Latest v0.1.4 · 21d ago Security brief →

Features

  • Convert images to terminal‑friendly ASCII using Braille glyphs
  • Edit existing ASCII files with Vim‑style motions or mouse interaction
  • Interactive help menu accessible via `?` inside the editor

Recent releases

View all 4 releases →
No immediate action
v0.1.2 New feature

Windows builds + docs

v0.1.0 Breaking risk
Notable features
  • Undo history for cropping operations
  • Color palette selection UI with navigation and header notifications
  • Background and foreground palettes integrated into the editor
Full changelog

Changelog

  • 9aed93b1253de0967fc257474d320626f726990e README
  • f1a3c9335687e7dbb25b3d8bcc7e5f6a0ba6f17e add goreleaser config
  • 20bb6b2c0da069eca3fdfb7f5ed6ff11256b6231 now i'm done
  • b12b8417c9267ce7e3af6686caf66011c4232a69 i'm finished
  • ca8d2df765577ca2a3e7f3a36fa859bf4cd87a8e final touches
  • 9bbebb20ad7678fa88311c17cd8960f0a139b703 themes completed
  • 18ea9c73e8308f65c3920c10a24e4a44a3625dbf theme: kanagawa foreground
  • e1b1049cda922b0d17943b6d8f9ac004a2a7420f navigated theme pages with the mouse :)
  • fa1af7b04c02962fbd6877b80cff1e491e0c6d0d bg/fg pages have their own state
  • 782cd146c626aca7a15b7e772b144eef1a9674b4 finally fixed weird edge case in palette
  • 1acf37f4c6bbe5639cb9075a255e819d0925a641 crunch time incoming
  • 160114f4ab158bdf80f8eac7c6021ea49244f2c5 refactor: themes derive ansi from hex value. Users could add their own themes without much trouble
  • cc0851d1e10407f43c7aa487b5ab0ee223832405 what is this beautiful help menu doing in this project
  • e3cf9a54666d4618b1492e245d7837986dab5e2e help menu let's goo
  • 34573b023a72f949b10124e54b41419c6f3ac8dd sigh of relief that the theme selector is out the way
  • 44ac76f33b7eb065fa1bfb7131f671333f53e930 fix: mouse mapping on canvas and panel
  • 9e7c01cf635d7abb5ab4cee730080bab11b58261 sync
  • 2edc44e88d69bf56145a8536e44e7f12a5df1d31 concurrently resize image... blazingly fast
  • 546e0a0b81f2c14aff9afd3d8cc220e0268c0b17 perf: removed visited map
  • 46933663b9cf5bf47b5259cf5fce16147b818835 theme: palettes added for 4 other themes
  • 4a6d2ba96f9c2e1e0eca46cc084beb4ceadaa23c sync
  • de0102ef421e3f665a67c53319830842eb008df9 theme: more added
  • 258f5cabf33e20ff564a3c1758904fb1d4777343 theme: kanagawa
  • 27e1d8cbfee988fad334272899dcf30aae888f13 bada bap: extending color palette
  • 31d6ea76fbdd54b4532da3a7756b92acf4f0cb57 bop: vim niceties
  • 2c42ebaafcc6f8f7c88b83a3b1c73862757625da bam: more accurate image resizing & support for webp
  • ed44ed267aa009feff9aa00f6e828c8f2144b05d boom: mouse remapped to consier window
  • ab09d3f7332496042461f9bc656f9d5ea599c548 feat: dithering algorithms
  • 7f16fc52826cd27b8beaeb09620823064518c757 feat: ajust window in scaling tui
  • 38f2fce866f464770199c52cd5651a6453aca509 sync: luminance calc
  • 647942310b09d153a444e6792e6d3ebab1a2a756 feat: invert bitmap
  • 6bb44c39b2484ca15a566cb81d07d2f2b468087e refactor: [][]bool -> bitmap
  • 8b88ff26b25996967884b9a06fb6213bfb5af307 fix: state refreshes window when grid changes
  • d36ee9faa9e16e1f7f81b9fdcc4a2bb340b16561 feat: dynamic windowing on canvas :: lovely
  • a332c2e1591d1bcbfc7b66513744e6bf3271621c feat: simple canvas window works well
  • 3e18475082c7c3c63067cdef83d3556997c75376 feat: transition from scaling tui -> ascii editor
  • 8355ad55d657fa4093f541e143492616925d681c refactor: notifcation moved to component pkg
  • 196df33e13deb6ed431d3ff37278996233408df8 feat: scaling works
  • 2309c4c755e9774c2853bc260dccee7942ed5eaf feat: windowing added to scaling tui
  • dd07ad0a7e457dcf5111cb1a87a76e558328dc9d feat: 2nd tui for scaling initial ascii
  • 929984e50d9b58e10350262c75ded0552694248f vastly simplified converting an image -> ascii. Spiffing I say
  • 69ae73e8529f16194a458f463430c96db5efb6bb had a crack at clustering pixels... realize I should just resize the image to the canvas
  • 71967aa49bf8505222eeb400313ad0b0d72bcff0 started mapping clusters of pixels -> single braille points
  • a7ef87b3dac4c12a038fa40126f57f9ad2db4b0f feat: helpers for converted a buffer -> image, dithering looks good
  • 9af17c271efbc4de2af78fcd3b45c33fb092eb06 fix: quantize returns correct err
  • 1fd7d8f00581f7565922e395a37cdf2e17cc7f37 feat: image -> braille conversion & dithering
  • d1bf3a4649b0d03a2deb524cd4454e30237886b4 sync: status indicators
  • 1c0276b4d5618667faae51f8f1ee1f386854dc8a sync: draw state complete
  • dbe2b8756d87c73454768279547157ab5e960255 refactor: mirror state
  • 3619f3127ad0c62703d55c37c49e76d7425deb1a notify messages
  • b872f6a6c451c786b6d748bde3ccdc47b1901d95 feat: save output file
  • fdcc1b36387e724cbeaa219fbd5f4feda817f721 sync
  • 9ca1e7e018bb5bda9b3955dea2df7f3e06d2e13e feat: modals setup
  • 7dcb24a5b408c58f7da838de953f6c707dd94fbb feat: command mode
  • 2d9a092c8575cd5daa4db5021d8f0770352d78d0 magnifer bits can be flipped with mouse. Mouse actions completed
  • 36220661fd854ab24115926532b88649e490f70c mouse toggles background & foreground
  • 11907016cd7a6c65afe9b9fda0187ec7e159e47b select palette colors with mouse
  • 197e55f1fb5e12dfe71acad664938f0b5fc1e71f fix: canvas mouse behaviour
  • 1bc93c7ba6dd9e7fe749cc9619d4f3c81832042f moved mode_indicator to status bar similar to vim
  • 7b2091942eb7cd6825fd978d3ad9abc509aa2b7e canvas mouse actions and mode indicator
  • 35082e0951fa07118c6e8a94ae704a369db918fa feat: cropping now has undo history, schweet
  • fd1eb31177de5f1668777693a0ba14068bb158ca flip multiple bits, added to undo history
  • bf4dc19047753e1d4a3c3ca1f28e835466925252 undo history applied to colors
  • c805dea3f1a70a2610ff2a38b3c80c074c84dd0f undo history :: built core interface
  • a7fbeda2f237ad8b63489f7f90f64c5f52617584 feat: background & foreground palettes
  • f0700c3ee602c15542befb3ab11e64f05940561e feat: notification used as palette header
  • 10e9f8ab964fc40be0505e33d659763693e7a183 colors are working :)
  • 43f87c0b7ad8db4c028dce39b508f9f0e7ff795f color palette navigation
  • b907acabe527fc30590f61e37d9a2e56ec4f5a0c feat: color palette selection ui
  • f4927d47ac18c0498f4b42ed189737054e034e92 color palette in panel
  • 171bb42aaeeb71b1d0db9c0976ebe9d6816ecc57 feat: parsed fg and bg colors
  • ba241ede0c258900815fe5424d48ad18de603926 sync: rendering logic
  • d942cd7c5c21e100b367cc9b71624794b6dc519e feat: reduced ansi encoding when rendering cells
  • 8304c4c7f4050e363988d57c461d962a1167d65b feat: got rid of old parser
  • 097d06d625be80abd92901a23de22d0456cc9c09 feat: ansi parser maps to grid
  • 03ef3553b20d916bcb5dec537c3f26f839f4abad refactor: cell data structure
  • a1f1ffb8f92a2f895cff56dd6d1a57538aa2af0b feat: ansi parser scaffolding
  • aa9e77947bbfa143a0527717537e5988dfe60ee6 refactor: moved parsing to core package
  • f5854dead7292dfc719f8fbf1db00999959e21ef sync: file arg
  • 926704aa15e870d31cb4e631ee8db51471fee40c sync: select current line
  • 988f3e2ffa528c4143ef2bd617fb553c1a09136e created colored fox for parsing
  • e5bdb011ba54610b9d32c03cbc974b1162fb6b1f sync
  • 5daecaec83756c8efa4dece479f18aa7c9d9ec4b cropping mode complete, feels good
  • bc4590da73c5dfe85de64d31ce6fd3a680934a4a now we're cropping
  • c41ab6040b94245fe03f1ebd472c57a307be7e70 refactor: harpoon block gets updated
  • 017ba1eaf6cb630d02dffbab87f8224db872afec crop mode
  • 5cb620affc29c0b0c531f13b8ad02827b8f8a0e5 sync
  • 4f2648ae7b80ed048f39243c5f9c92638cb64636 mirrors (in a northern irish accent)
  • 3dc2009d5d18923acb6c8d1b69da6fe2c7d9dd0c sync
  • dc98b6fdf4d2d0aa9deb355b3acab30b700cef67 i love 2D grids
  • 6fea6eee538e2382c4904b490e191dbc6f3770b8 feat: visual block mode complete
  • e2bab2246c12595ed94356d04fd9a77f587d8de8 refactor: state file for canvas
  • 926a551779235603066c547d46df1d50c204084c sync
  • e611c148b75fb5fd2db16feb1256e0319f01d874 refactor: update_cursor, selected map and visual block mode
  • 42079b9cc4a267cafb7c5460e18380a53f31aa08 the todo list is written
  • 5d8a342a9ea40fe716c302744bef61e9cafc5321 feat: added clear and fill messages
  • 7a80e9edd81ce3e6a598ac06fd158648a999f865 bit flipping works and it's beautiful
  • afc22579edf695df1e1b75c4484a6d06ad87b5be logging
  • 52b17649efad0e580cc9ebb1488152bc7eebcab3 magnifier rendered and working
  • 0b9c6f2543694f0abba2b98375c15e0b4ae8aa7f magnifier conversion
  • 46721750c3123ed5d6a981bc764235146e9764e8 refactor: common pkg
  • a2516c594633cbb8ec10ba8c6d6d78adb03ea3e2 feat: find center
  • 2faeda0381df12aafe6787a46a24e8c513e5ed40 sync
  • 6bf7078f4408e1d8ef8de6655fb212a33b33c764 feat: padding to normalize canvas
  • 9fd245c6be8954169d4309fb2f66e9b80ffa226c feat: vim motions :: basics
  • ab91adade6608584020d695b8b21485aad3c4ab6 sweet sweet ansi
  • 24834733956dddbf4abf50c83506c64d72493817 David Abraham

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

About

Stars
87
Forks
3
Language
Go

Install & Platforms

Install via
brew shell-script go
Platforms
linux macos

Beta — feedback welcome: [email protected]