|
1 | 1 | # Flakepiles for Obsidian |
2 | 2 |
|
3 | | -An Obsidian plugin to put small stickies / cards in a single file, and manage them in masonry layout. |
| 3 | +An Obsidian plugin to put small notes / stickies / cards in a dedicated file, and manage them in masonry layout. |
4 | 4 |
|
5 | | -The underlying file format (`.flakes`) is JSON. The plugin is in early development, though basic features should now work properly. |
| 5 | +A "flake" means a small piece of note, and a "flakepile" is a pile of those flakes. |
| 6 | + |
| 7 | +Can be used to store ideas, diaries, code snippets, and more. |
| 8 | + |
| 9 | +*The preview image is in horizontal layout. You can change this to vertical layout.* |
6 | 10 |
|
7 | 11 |  |
8 | 12 |
|
9 | | -## Installation |
| 13 | +## Why |
10 | 14 |
|
11 | | -The plugin is not published as Obsidian's community plugin yet. Please use [BRAT](https://github.com/TfTHacker/obsidian42-brat) to install the plugin. I might (or might not) submit the plugin later. |
| 15 | +I don't want 100 `.md` files with 1 sentence each. |
12 | 16 |
|
13 | 17 | ## Status |
14 | 18 |
|
15 | | -Basic features. I've tested many edge cases I can think of, and [I myself am using it currently](https://en.wikipedia.org/wiki/Eating_your_own_dog_food), but please expect bugs exist. |
| 19 | + The plugin is in early development, though basic features should now work properly. I've tested many cases I can think of, and [I myself am using it currently](https://en.wikipedia.org/wiki/Eating_your_own_dog_food), but please expect bug exists in corner cases. |
16 | 20 |
|
17 | | -## Why |
| 21 | +## Installation |
18 | 22 |
|
19 | | -I don't want 100 `.md` files with 1 sentence each. |
| 23 | +The plugin is not published as Obsidian's community plugin yet. Please use [BRAT](https://github.com/TfTHacker/obsidian42-brat) to install the plugin, or copy the files under the release tag to the plugin folder of your Obsidian application. You can also [build it from source](#build-from-source). |
20 | 24 |
|
21 | 25 | ## Tech Stack |
22 | 26 |
|
23 | 27 | Vite + Vue 3 + TypeScript + Sass |
24 | 28 |
|
25 | | -Using Vite as I'm using Vue, using Vue as I'm mostly familiar with it. |
| 29 | +The underlying file format (`.flakes`) is JSON. See the [non-goals](#non-goals) section for explanation. |
| 30 | + |
| 31 | +## Roadmap |
26 | 32 |
|
27 | | -## Goals |
| 33 | +Inside a flakepile: |
28 | 34 |
|
29 | 35 | - [x] Mount Vue into Obsidian |
30 | 36 | - [x] Flakepile |
31 | 37 | - [x] Masonry layout |
32 | 38 | - [x] Masonry direction (vertical / horizontal) |
33 | | - - [x] (Sort of) Mobile-adaptive layout |
| 39 | + - [x] (Sort of) mobile-adaptive layout |
34 | 40 | - [x] Flake size |
35 | 41 | - [x] Flake elastic sizing |
36 | 42 | - [x] Flake sorting (name, time created, time modified) |
37 | 43 | - [x] Flake |
38 | 44 | - [x] Flake creation, update, deletion |
39 | 45 | - [x] Flake markdown rendering |
40 | | - - [x] Text Flake |
41 | | - - [x] Code Flake |
42 | | - - [x] Image Flake |
43 | | -- [x] Search filter inside a Flakepile |
| 46 | + - [x] Text flake |
| 47 | + - [x] Image flake |
| 48 | + - [x] Code flake |
| 49 | +- [x] Search filter inside a flakepile |
44 | 50 | - [ ] Flake colors (theme) |
45 | 51 | - [ ] Flake labels |
46 | 52 | - [ ] Label creation, update, deletion |
47 | | - - [ ] Add / remove label to Flake |
| 53 | + - [ ] Add / remove label to flake |
48 | 54 | - [ ] Label color |
49 | | - - [ ] Hide specific label (display as `+N`) |
| 55 | + - [ ] Hide some labels (display as `+N`) |
50 | 56 | - [ ] Label filtering |
| 57 | + |
| 58 | +Obsidian-wise: |
| 59 | + |
| 60 | +- [x] "Create new flakepile" file menu option |
| 61 | +- [x] "Flake count" status bar item [1] |
51 | 62 | - Limited support to internal plugins |
52 | 63 | - [x] Preview other markdown file |
53 | | - - [x] Jump to global search when clicking on a tag. |
| 64 | + - [x] Jump to global search when clicking on a tag |
| 65 | + |
| 66 | +[1] Due to the nature of this plugin, other status bar items are hided in flakepile view. Please let me know if you think some status bar item should be displayed. |
54 | 67 |
|
55 | 68 | ## Long term goals |
56 | 69 |
|
57 | 70 | - Search keywords highlight |
58 | | -- Copy Flake across Flakepile (the Copy Raw botton is for this) |
| 71 | +- Copy flake across flakepiles (the "copy raw" botton is for this) |
| 72 | +- Export files to markdown files |
| 73 | + - Export as a single markdown file |
| 74 | + - Export as a `.zip` archive, each flake as a markdown file |
| 75 | +- Import the `.zip` archive to a flakepile |
59 | 76 | - Import multiple markdown files to Flakes |
60 | | -- Import `.zip` archive to a Flakepile |
61 | | - - Import as a new Flakepile |
62 | | - - Import into an existing Flakepile |
63 | | -- Export files to a `.zip` archive, each Flake as a markdown file |
64 | | -- Transition animation (investigated a bit, mostly jank, needs help) |
65 | 77 |
|
66 | 78 | ## Non-goals |
67 | 79 |
|
68 | | -- Very large Flakepile support (not the very intended way) |
69 | | -- Live editing of Flake (too complex) |
| 80 | +- Freedom / manual layout (consider using Canvas) |
| 81 | +- Very large flakepile support (not the very intended way) |
| 82 | +- Live editing of a flake (too complex) |
70 | 83 | - Cross-file searching / Obsidian-wise searching (restricted by API) |
71 | | -- Global search indexing support (restricted by API) |
72 | | -- Unit testing (do not have time) |
| 84 | +- Global search indexing (restricted by API) |
| 85 | +- Unit testing (do not have enough time) |
| 86 | + |
| 87 | +I recognize that this plugin is not so an Obsidian-style plugin, as it does not leverage markdown file like many other plugins do. On the other hand, this has the benefit of not having to juggle with black magics that makes a markdown file look like other layout (when the layout itself is quite complicated). |
| 88 | + |
| 89 | +Also, this plugin is primarily to fulfill my specific need. For this reason, I would prioritize maintainability over adding unplanned features. I'm open to suggestions, though feature requests might be considered only when it's aligned to my own use case. 🙏 |
73 | 90 |
|
74 | 91 | ## Build from source |
75 | 92 |
|
76 | 93 | If you want to take a look inside the development of the plugin, or just want to ensure maximum safety, you can clone this repository and build from source: |
77 | 94 |
|
78 | 95 | ``` |
79 | 96 | npm i |
80 | | -npm run dev // watch mode, works with hot reload [1] |
81 | | -npm run build:dev // one-time dev build without minification |
82 | | -npm run build // build for production |
| 97 | +npm run dev // Watch mode, works with hot reload [1] |
| 98 | +npm run build:dev // One-time dev build without minification |
| 99 | +npm run build // Build for production |
83 | 100 | ``` |
84 | 101 |
|
85 | 102 | [1] [Hot reload](https://github.com/pjeby/hot-reload) |
86 | 103 |
|
87 | | -With `npm run build`, the output files will be copied to `dist` folder. |
| 104 | +WHen running `npm run build`, the output files will be copied to `dist` folder. |
88 | 105 |
|
89 | 106 | ## License |
90 | 107 |
|
|
0 commit comments