Giter VIP home page Giter VIP logo

tui-journal's People

Contributors

0323pin avatar ammarabouzor avatar dependabot[bot] avatar github-actions[bot] avatar kevinmatthes avatar orhun avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

tui-journal's Issues

[Suggestion] Almost Automatic CHANGELOG

It is a good practice to maintain a CHANGELOG in order to document the changes between versions. Often, one major problem is how these CHANGELOGs are maintained; some policies trigger numerous unnecessary Merge Conflicts and thus slow down the development critically, other ones require much effort as the maintainers are the only ones who are allowed to edit it. But fortunately, there is a lot of software to make a CHANGELOG almost completely self-maintaining.

I would like to offer you to set up everything for this project such that:

  • CHANGELOG entries are created automatically from the committed changes on PR.
  • the CHANGELOG is assembled from the submitted fragments on release.

Would you be interested in such a feature for TUI-Journal, @AmmarAbouZor?

Expand main footer if the text doesn't fit on the screen

The height of the app main footer is currently fixed to one line. and if the footer got longer it will be cut and not all the information will be shown.
The height of the footer should be calculated dynamically analog to the footers in app popups

[Feature Request] JSON Back-end Compression

Users choosing the JSON back-end might notice an inconveniently increasing file size of the back-end the more journals are added. I would like to suggest to compress the JSON file if a certain file size threshold was exceeded. Regarding the compression algorithm, I would like to suggest Brotli (https://github.com/google/brotli) which is enhanced for compressing plain text files, like the JSON back-end, and achieves a convenient compression ratio. Rust bindings are available: https://github.com/dropbox/rust-brotli.

[Documentation] Create WIKI

Since the app is growing and more features are added, it's important to have them documented so the users don't have to explore them by themselves from withing the app.

Creating and WIKI with more information about each feature is a good way to help the users discover all the feature tui-journals has to offer with more information about how to use these feature effectively and to explain why something is done that way.

This would be very helpful to achieve before the next big release

[Feature] Edit current journal in external editor

It would be useful sometimes to have the power of an external editor to edit the journal. This will give the users more freedom to edit the journal the way they want and keep the app to manage and show them and for a simple and fast editing as well.

To achieve that we could take inspirations from other apps which do that like gitui which has this option in the commit popup.

important point to be aware of:

  • Check how the behavior would work on windows since there is not EDITOR or VISUAL variables there and it doesn't come with vi by default
  • Check the behavior if the user sets their Editor to be an external Editor like VS-Code or Neovide

[Suggestion] Dependabot

Dependabot is a technology shipped with and maintained by GitHub to automatically suggest version updates for the configured dependencies. This is very useful in order to keep the project up-to-date and secure as the updates might also contain security fixes. This project uses Rust crates and GitHub Actions, so the following setup would be useful for an initial configuration:

version: 2
updates:
  - package-ecosystem: cargo
    directory: /
    schedule:
      interval: daily
      time: '00:00'
    assignees:
      - AmmarAbouZor
    commit-message:
      prefix: 'Chore: '

  - package-ecosystem: github-actions
    directory: /
    schedule:
      interval: daily
      time: '00:00'
    assignees:
      - AmmarAbouZor
    commit-message:
      prefix: 'Chore: '

Every day at UTC midnight (after a delay of usually about 1.75 hours), Dependabot will search for updates for your configured dependencies and suggest them as PRs. You will be set as assignee and both the commit and the PR will be named similarly with the prefix Chore: , followed by the actual update, e.g. Chore: bump clap from 4.3.0 to 4.3.3. The prefix "chore" is usual for Dependabot version updates, Clap, for example, uses it, as well. Furthermore, that prefix is also configured as skip condition for the CHANGELOG fragment generation.

Unfortunately, the check interval cannot be set to hourly but you are allowed to invoke the Depedabot check for updates manually from the Insights tab of this repository (Insights → Dependency graph → Dependabot → Last checked ... → Check for updates). If the daily interval should be too much, you can also set it to once a week or once a month.

There is also another bot to check for updates: Renovate. This bot is used by Clap and is able to do basically the same, i.e. checking for version updates of dependencies. However, I only used Dependabot, so far, so I cannot assist you in configuring Renovate. Furthermore, it would cause trouble if I would suggest you the above configuration in a PR, so the easiest way to enable Dependabot is to copy the configuration and to paste it to a file named .github/dependabot.yml. If you wish to disable Dependabot in the future, just delete its configuration file; then, you can use another tool like Renovate, for example.

[Feature Request] Assign Category to Journal

As I already mentioned in #6, I primarily use the application to take notes on the projects I develop. Thus, I have multiple journals which belong to one project. I would like to ask for adding a category feature such that I can assign one optional category to a journal which should also affect the sorting in the left-hand side bar.

Here are some more detailed information of what I assume would be helpful for the implementation:

  • When a journal is created / edited (the journal's metadata), there might be a third line in the input window to enter a category name.
  • Entering a category should be optional such that by default, a journal does not have a category.
  • The category should be changeable just like the journal's title.
  • The left-hand side bar should reflect the category assignments by sorting the journals also by their category.
  • The category should have the highest precedence when sorting the journals in the left-hand side bar.
  • The category should be shown in another colour in the left-hand side bar together with the other metadata of a journal.
  • In the database, the category could be another column of type TEXT in the entries table.
  • The default value of category in the database should be SQL's NULL (no data, yet).
  • If the database does not already exist, the schema of entries should contain the category column when creating that table.
  • If the database already exists, the schema of entries should be altered by adding the new column; this would allow for the loss-free migration of databases from previous versions of the application.
  • For the JSON back-end, the category field should be made an Option<String> in the Serde definition due to not being mandatory.
  • For the implementation in general, Rust's default String type would suffice (in contrast to the content field which also might be a Gap Buffer or Rope for performance benefits, instead).
  • On release, this would be a minor in the terms of SemVer (new feature, no breaking changes).

I assume that this feature would be useful to many users as they probably already know a similar structuring technique from other note-taking applications they may have used before. Thus, the following use cases are also covered by this feature (target audiences in parentheses).

  • organising shopping lists by stores (general audience)
  • sorting lecture notes by lecture (students)
  • managing papers' citation metadata by research topic / project (researchers)
  • structuring details on stories when writing a novel / developing a game (authors / game designers)

What is your opinion on this feature, @AmmarAbouZor?

Cannot install via cargo

Getting this error when installing with cargo on Fedora 38:

 cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  run pkg_config fail: `PKG_CONFIG_ALLOW_SYSTEM_CFLAGS="1" "pkg-config" "--libs" "--cflags" "openssl"` did not exit successfully: exit status: 1
  error: could not find system library 'openssl' required by the 'openssl-sys' crate

  --- stderr
  Package openssl was not found in the pkg-config search path.
  Perhaps you should add the directory containing `openssl.pc'
  to the PKG_CONFIG_PATH environment variable
  Package 'openssl', required by 'virtual:world', not found


  --- stderr
  thread 'main' panicked at '

  Could not find directory of OpenSSL installation, and this `-sys` crate cannot
  proceed without this knowledge. If OpenSSL is installed and this crate had
  trouble finding it,  you can set the `OPENSSL_DIR` environment variable for the
  compilation process.

  Make sure you also have the development packages of openssl installed.
  For example, `libssl-dev` on Ubuntu or `openssl-devel` on Fedora.

  If you're in a situation where you think the directory *should* be found
  automatically, please open a bug at https://github.com/sfackler/rust-openssl
  and include information about your system as well as this message.

  $HOST = x86_64-unknown-linux-gnu
  $TARGET = x86_64-unknown-linux-gnu
  openssl-sys = 0.9.87

But I have OpenSSL installed.

Per this:

Make sure you also have the development packages of openssl installed. For example, libssl-dev on Ubuntu or openssl-devel on Fedora.

I installed openssl-devel via dnf. After that, it installed. Is that package required or is this a bug?

Unable to build using instructions on Linux Mint (had same problem on PopOS)

I'm unable to build due to a compile error on Linux Mint with an Intel i7 laptop.

The error dump is to long so I'll post the second half in a comment.

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/editor/mod.rs:303:13
|
302 | self.text_area.set_block(
| --------- arguments to this method are incorrect
303 | / Block::default()
304 | | .borders(Borders::ALL)
305 | | .style(text_block_style)
306 | | .title(title),
| |_____________________________^ expected ratatui::widgets::block::Block<'_>, found ratatui::widgets::Block<'_>
|
= note: ratatui::widgets::Block<'_> and ratatui::widgets::block::Block<'_> have similar names, but are actually distinct types
note: ratatui::widgets::Block<'_> is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/widgets/block.rs:230:1
|
230 | pub struct Block<'a> {
| ^^^^^^^^^^^^^^^^^^^^
note: ratatui::widgets::block::Block<'_> is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/widgets/block.rs:233:1
|
233 | pub struct Block<'a> {
| ^^^^^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1648:12
|
1648 | pub fn set_block(&mut self, block: Block<'a>) {
| ^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/editor/mod.rs:317:41
|
317 | self.text_area.set_cursor_style(cursor_style);
| ---------------- ^^^^^^^^^^^^ expected ratatui::style::Style, found a different ratatui::style::Style
| |
| arguments to this method are incorrect
|
= note: ratatui::style::Style and ratatui::style::Style have similar names, but are actually distinct types
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/style.rs:192:1
|
192 | pub struct Style {
| ^^^^^^^^^^^^^^^^
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/style.rs:208:1
|
208 | pub struct Style {
| ^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1941:12
|
1941 | pub fn set_cursor_style(&mut self, style: Style) {
| ^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/editor/mod.rs:319:46
|
319 | self.text_area.set_cursor_line_style(Style::default());
| --------------------- ^^^^^^^^^^^^^^^^ expected ratatui::style::Style, found a different ratatui::style::Style
| |
| arguments to this method are incorrect
|
= note: ratatui::style::Style and ratatui::style::Style have similar names, but are actually distinct types
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/style.rs:192:1
|
192 | pub struct Style {
| ^^^^^^^^^^^^^^^^
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/style.rs:208:1
|
208 | pub struct Style {
| ^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1770:12
|
1770 | pub fn set_cursor_line_style(&mut self, style: Style) {
| ^^^^^^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/editor/mod.rs:322:13
|
321 | self.text_area.set_style(
| --------- arguments to this method are incorrect
322 | / Style::default()
323 | | .fg(Color::Reset)
324 | | .remove_modifier(Modifier::BOLD),
| |________________________________________________^ expected ratatui::style::Style, found a different ratatui::style::Style
|
= note: ratatui::style::Style and ratatui::style::Style have similar names, but are actually distinct types
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/style.rs:192:1
|
192 | pub struct Style {
| ^^^^^^^^^^^^^^^^
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/style.rs:208:1
|
208 | pub struct Style {
| ^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1629:12
|
1629 | pub fn set_style(&mut self, style: Style) {
| ^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/editor/mod.rs:328:34
|
328 | .set_selection_style(Style::default().bg(Color::White).fg(Color::Black));
| ------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected ratatui::style::Style, found a different ratatui::style::Style
| |
| arguments to this method are incorrect
|
= note: ratatui::style::Style and ratatui::style::Style have similar names, but are actually distinct types
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/style.rs:192:1
|
192 | pub struct Style {
| ^^^^^^^^^^^^^^^^
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/style.rs:208:1
|
208 | pub struct Style {
| ^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1387:12
|
1387 | pub fn set_selection_style(&mut self, style: Style) {
| ^^^^^^^^^^^^^^^^^^^

error[E0277]: the trait bound impl ratatui::widgets::Widget + '_: Widget is not satisfied
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/editor/mod.rs:330:29
|
330 | frame.render_widget(self.text_area.widget(), area);
| ------------- ^^^^^^^^^^^^^^^^^^^^^^^ the trait Widget is not implemented for impl ratatui::widgets::Widget + '_
| |
| required by a bound introduced by this call
|
= help: the following other types implement trait Widget:
BarChart<'a>
Canvas<'a, F>
Chart<'a>
Gauge<'a>
LineGauge<'a>
List<'a>
Monthly<'a, S>
Paragraph<'a>
and 5 others
note: required by a bound in Frame::<'_>::render_widget
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/terminal.rs:598:12
|
598 | W: Widget,
| ^^^^^^ required by this bound in Frame::<'_>::render_widget

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/entry_popup/mod.rs:153:46
|
153 | self.title_txt.set_cursor_line_style(Style::default());
| --------------------- ^^^^^^^^^^^^^^^^ expected ratatui::style::Style, found a different ratatui::style::Style
| |
| arguments to this method are incorrect
|
= note: ratatui::style::Style and ratatui::style::Style have similar names, but are actually distinct types
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/style.rs:192:1
|
192 | pub struct Style {
| ^^^^^^^^^^^^^^^^
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/style.rs:208:1
|
208 | pub struct Style {
| ^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1770:12
|
1770 | pub fn set_cursor_line_style(&mut self, style: Style) {
| ^^^^^^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/entry_popup/mod.rs:154:45
|
154 | self.date_txt.set_cursor_line_style(Style::default());
| --------------------- ^^^^^^^^^^^^^^^^ expected ratatui::style::Style, found a different ratatui::style::Style
| |
| arguments to this method are incorrect
|
= note: ratatui::style::Style and ratatui::style::Style have similar names, but are actually distinct types
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/style.rs:192:1
|
192 | pub struct Style {
| ^^^^^^^^^^^^^^^^
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/style.rs:208:1
|
208 | pub struct Style {
| ^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1770:12
|
1770 | pub fn set_cursor_line_style(&mut self, style: Style) {
| ^^^^^^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/entry_popup/mod.rs:155:45
|
155 | self.tags_txt.set_cursor_line_style(Style::default());
| --------------------- ^^^^^^^^^^^^^^^^ expected ratatui::style::Style, found a different ratatui::style::Style
| |
| arguments to this method are incorrect
|
= note: ratatui::style::Style and ratatui::style::Style have similar names, but are actually distinct types
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/style.rs:192:1
|
192 | pub struct Style {
| ^^^^^^^^^^^^^^^^
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/style.rs:208:1
|
208 | pub struct Style {
| ^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1770:12
|
1770 | pub fn set_cursor_line_style(&mut self, style: Style) {
| ^^^^^^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/entry_popup/mod.rs:162:49
|
162 | self.title_txt.set_cursor_style(active_cursor_style);
| ---------------- ^^^^^^^^^^^^^^^^^^^ expected ratatui::style::Style, found a different ratatui::style::Style
| |
| arguments to this method are incorrect
|
= note: ratatui::style::Style and ratatui::style::Style have similar names, but are actually distinct types
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/style.rs:192:1
|
192 | pub struct Style {
| ^^^^^^^^^^^^^^^^
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/style.rs:208:1
|
208 | pub struct Style {
| ^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1941:12
|
1941 | pub fn set_cursor_style(&mut self, style: Style) {
| ^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/entry_popup/mod.rs:163:48
|
163 | self.date_txt.set_cursor_style(deactivate_cursor_style);
| ---------------- ^^^^^^^^^^^^^^^^^^^^^^^ expected ratatui::style::Style, found a different ratatui::style::Style
| |
| arguments to this method are incorrect
|
= note: ratatui::style::Style and ratatui::style::Style have similar names, but are actually distinct types
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/style.rs:192:1
|
192 | pub struct Style {
| ^^^^^^^^^^^^^^^^
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/style.rs:208:1
|
208 | pub struct Style {
| ^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1941:12
|
1941 | pub fn set_cursor_style(&mut self, style: Style) {
| ^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/entry_popup/mod.rs:164:48
|
164 | self.tags_txt.set_cursor_style(deactivate_cursor_style);
| ---------------- ^^^^^^^^^^^^^^^^^^^^^^^ expected ratatui::style::Style, found a different ratatui::style::Style
| |
| arguments to this method are incorrect
|
= note: ratatui::style::Style and ratatui::style::Style have similar names, but are actually distinct types
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/style.rs:192:1
|
192 | pub struct Style {
| ^^^^^^^^^^^^^^^^
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/style.rs:208:1
|
208 | pub struct Style {
| ^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1941:12
|
1941 | pub fn set_cursor_style(&mut self, style: Style) {
| ^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/entry_popup/mod.rs:167:49
|
167 | self.title_txt.set_cursor_style(deactivate_cursor_style);
| ---------------- ^^^^^^^^^^^^^^^^^^^^^^^ expected ratatui::style::Style, found a different ratatui::style::Style
| |
| arguments to this method are incorrect
|
= note: ratatui::style::Style and ratatui::style::Style have similar names, but are actually distinct types
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/style.rs:192:1
|
192 | pub struct Style {
| ^^^^^^^^^^^^^^^^
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/style.rs:208:1
|
208 | pub struct Style {
| ^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1941:12
|
1941 | pub fn set_cursor_style(&mut self, style: Style) {
| ^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/entry_popup/mod.rs:168:48
|
168 | self.date_txt.set_cursor_style(active_cursor_style);
| ---------------- ^^^^^^^^^^^^^^^^^^^ expected ratatui::style::Style, found a different ratatui::style::Style
| |
| arguments to this method are incorrect
|
= note: ratatui::style::Style and ratatui::style::Style have similar names, but are actually distinct types
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/style.rs:192:1
|
192 | pub struct Style {
| ^^^^^^^^^^^^^^^^
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/style.rs:208:1
|
208 | pub struct Style {
| ^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1941:12
|
1941 | pub fn set_cursor_style(&mut self, style: Style) {
| ^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/entry_popup/mod.rs:169:48
|
169 | self.tags_txt.set_cursor_style(deactivate_cursor_style);
| ---------------- ^^^^^^^^^^^^^^^^^^^^^^^ expected ratatui::style::Style, found a different ratatui::style::Style
| |
| arguments to this method are incorrect
|
= note: ratatui::style::Style and ratatui::style::Style have similar names, but are actually distinct types
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/style.rs:192:1
|
192 | pub struct Style {
| ^^^^^^^^^^^^^^^^
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/style.rs:208:1
|
208 | pub struct Style {
| ^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1941:12
|
1941 | pub fn set_cursor_style(&mut self, style: Style) {
| ^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/entry_popup/mod.rs:172:49
|
172 | self.title_txt.set_cursor_style(deactivate_cursor_style);
| ---------------- ^^^^^^^^^^^^^^^^^^^^^^^ expected ratatui::style::Style, found a different ratatui::style::Style
| |
| arguments to this method are incorrect
|
= note: ratatui::style::Style and ratatui::style::Style have similar names, but are actually distinct types
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/style.rs:192:1
|
192 | pub struct Style {
| ^^^^^^^^^^^^^^^^
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/style.rs:208:1
|
208 | pub struct Style {
| ^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1941:12
|
1941 | pub fn set_cursor_style(&mut self, style: Style) {
| ^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/entry_popup/mod.rs:173:48
|
173 | self.date_txt.set_cursor_style(deactivate_cursor_style);
| ---------------- ^^^^^^^^^^^^^^^^^^^^^^^ expected ratatui::style::Style, found a different ratatui::style::Style
| |
| arguments to this method are incorrect
|
= note: ratatui::style::Style and ratatui::style::Style have similar names, but are actually distinct types
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/style.rs:192:1
|
192 | pub struct Style {
| ^^^^^^^^^^^^^^^^
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/style.rs:208:1
|
208 | pub struct Style {
| ^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1941:12
|
1941 | pub fn set_cursor_style(&mut self, style: Style) {
| ^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/entry_popup/mod.rs:174:48
|
174 | self.tags_txt.set_cursor_style(active_cursor_style);
| ---------------- ^^^^^^^^^^^^^^^^^^^ expected ratatui::style::Style, found a different ratatui::style::Style
| |
| arguments to this method are incorrect
|
= note: ratatui::style::Style and ratatui::style::Style have similar names, but are actually distinct types
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/style.rs:192:1
|
192 | pub struct Style {
| ^^^^^^^^^^^^^^^^
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/style.rs:208:1
|
208 | pub struct Style {
| ^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1941:12
|
1941 | pub fn set_cursor_style(&mut self, style: Style) {
| ^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/entry_popup/mod.rs:182:38
|
182 | self.title_txt.set_style(active_style);
| --------- ^^^^^^^^^^^^ expected ratatui::style::Style, found a different ratatui::style::Style
| |
| arguments to this method are incorrect
|
= note: ratatui::style::Style and ratatui::style::Style have similar names, but are actually distinct types
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/style.rs:192:1
|
192 | pub struct Style {
| ^^^^^^^^^^^^^^^^
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/style.rs:208:1
|
208 | pub struct Style {
| ^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1629:12
|
1629 | pub fn set_style(&mut self, style: Style) {
| ^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/entry_popup/mod.rs:184:17
|
183 | self.title_txt.set_block(
| --------- arguments to this method are incorrect
184 | / Block::default()
185 | | .borders(Borders::ALL)
186 | | .style(active_style)
187 | | .title("Title"),
| |___________________________________^ expected ratatui::widgets::block::Block<'_>, found ratatui::widgets::Block<'_>
|
= note: ratatui::widgets::Block<'_> and ratatui::widgets::block::Block<'_> have similar names, but are actually distinct types
note: ratatui::widgets::Block<'_> is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/widgets/block.rs:230:1
|
230 | pub struct Block<'a> {
| ^^^^^^^^^^^^^^^^^^^^
note: ratatui::widgets::block::Block<'_> is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/widgets/block.rs:233:1
|
233 | pub struct Block<'a> {
| ^^^^^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1648:12
|
1648 | pub fn set_block(&mut self, block: Block<'a>) {
| ^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/entry_popup/mod.rs:190:38
|
190 | self.title_txt.set_style(invalid_style);
| --------- ^^^^^^^^^^^^^ expected ratatui::style::Style, found a different ratatui::style::Style
| |
| arguments to this method are incorrect
|
= note: ratatui::style::Style and ratatui::style::Style have similar names, but are actually distinct types
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/style.rs:192:1
|
192 | pub struct Style {
| ^^^^^^^^^^^^^^^^
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/style.rs:208:1
|
208 | pub struct Style {
| ^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1629:12
|
1629 | pub fn set_style(&mut self, style: Style) {
| ^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/entry_popup/mod.rs:192:17
|
191 | self.title_txt.set_block(
| --------- arguments to this method are incorrect
192 | / Block::default()
193 | | .borders(Borders::ALL)
194 | | .style(invalid_style)
195 | | .title(format!("Title : {}", self.title_err_msg)),
| |_____________________________________________________________________^ expected ratatui::widgets::block::Block<'_>, found ratatui::widgets::Block<'_>
|
= note: ratatui::widgets::Block<'_> and ratatui::widgets::block::Block<'_> have similar names, but are actually distinct types
note: ratatui::widgets::Block<'_> is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/widgets/block.rs:230:1
|
230 | pub struct Block<'a> {
| ^^^^^^^^^^^^^^^^^^^^
note: ratatui::widgets::block::Block<'_> is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/widgets/block.rs:233:1
|
233 | pub struct Block<'a> {
| ^^^^^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1648:12
|
1648 | pub fn set_block(&mut self, block: Block<'a>) {
| ^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/entry_popup/mod.rs:200:37
|
200 | self.date_txt.set_style(active_style);
| --------- ^^^^^^^^^^^^ expected ratatui::style::Style, found a different ratatui::style::Style
| |
| arguments to this method are incorrect
|
= note: ratatui::style::Style and ratatui::style::Style have similar names, but are actually distinct types
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/style.rs:192:1
|
192 | pub struct Style {
| ^^^^^^^^^^^^^^^^
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/style.rs:208:1
|
208 | pub struct Style {
| ^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1629:12
|
1629 | pub fn set_style(&mut self, style: Style) {
| ^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/entry_popup/mod.rs:202:17
|
201 | self.date_txt.set_block(
| --------- arguments to this method are incorrect
202 | / Block::default()
203 | | .borders(Borders::ALL)
204 | | .style(active_style)
205 | | .title("Date"),
| |__________________________________^ expected ratatui::widgets::block::Block<'_>, found ratatui::widgets::Block<'_>
|
= note: ratatui::widgets::Block<'_> and ratatui::widgets::block::Block<'_> have similar names, but are actually distinct types
note: ratatui::widgets::Block<'_> is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/widgets/block.rs:230:1
|
230 | pub struct Block<'a> {
| ^^^^^^^^^^^^^^^^^^^^
note: ratatui::widgets::block::Block<'_> is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/widgets/block.rs:233:1
|
233 | pub struct Block<'a> {
| ^^^^^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1648:12
|
1648 | pub fn set_block(&mut self, block: Block<'a>) {
| ^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/entry_popup/mod.rs:208:37
|
208 | self.date_txt.set_style(invalid_style);
| --------- ^^^^^^^^^^^^^ expected ratatui::style::Style, found a different ratatui::style::Style
| |
| arguments to this method are incorrect
|
= note: ratatui::style::Style and ratatui::style::Style have similar names, but are actually distinct types
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/style.rs:192:1
|
192 | pub struct Style {
| ^^^^^^^^^^^^^^^^
note: ratatui::style::Style is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/style.rs:208:1
|
208 | pub struct Style {
| ^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1629:12
|
1629 | pub fn set_style(&mut self, style: Style) {
| ^^^^^^^^^

error[E0308]: mismatched types
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-journal-0.6.0/src/app/ui/entry_popup/mod.rs:210:17
|
209 | self.date_txt.set_block(
| --------- arguments to this method are incorrect
210 | / Block::default()
211 | | .borders(Borders::ALL)
212 | | .style(invalid_style)
213 | | .title(format!("Date : {}", self.date_err_msg)),
| |___________________________________________________________________^ expected ratatui::widgets::block::Block<'_>, found ratatui::widgets::Block<'_>
|
= note: ratatui::widgets::Block<'_> and ratatui::widgets::block::Block<'_> have similar names, but are actually distinct types
note: ratatui::widgets::Block<'_> is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.24.0/src/widgets/block.rs:230:1
|
230 | pub struct Block<'a> {
| ^^^^^^^^^^^^^^^^^^^^
note: ratatui::widgets::block::Block<'_> is defined in crate ratatui
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ratatui-0.25.0/src/widgets/block.rs:233:1
|
233 | pub struct Block<'a> {
| ^^^^^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate ratatui are being used?
note: method defined here
--> /home/rj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tui-textarea-0.4.0/src/textarea.rs:1648:12
|
1648 | pub fn set_block(&mut self, block: Block<'a>) {
| ^^^^^^^^^

Toggle full-screen mode

Is it possible to hide the content view (on the right)? I usually don't take notes there and the titles of the entries are enough for me to remember the context. So the content is taking a huge amount of space in my terminal and it is usually empty.

It would be nice to have a special key to toggle the visibility of content. I'm happy to submit a PR if you find this applicable.

Releases have no binaries

It would be helpful to add a new GitHub action to generate binaries for each platform on new releases

[Feature Request] Option to Use Git Configured Editor as Default External Editor

Many users can be expected to have Git configured. Thus, it is very likely that, if Git is configured, also a preferred editor is set. With the git2 crate (MIT OR Apache-2.0), you can access this configuration and offer to use this editor as the default external editor. If the configuration should not be accessible for some reason, e.g., the current working directory is not a Git repository, Git is not configured, or a preferred editor for Git is not set, the current implementation should be applied as fallback. Thus, the configured Git editor would be an additional offer to the users.

For the implementation, first of all, run cargo add git2 --no-default-features to add the crate with minimal dependencies to the Rust manifest. Then, to access the configuration, you can use the following function.

fn get_git_editor() -> Result<String, u8> {
  git2::Repository::open(".").map_or(Err(64),
    |r| {
      r.config().map_or(Err(69), |c| c.get_string("core.editor").map_or(Err(65), Ok))
    },
  )
}

The function returns you either the configured Git editor or an integer according to the sysexits header; the latter is meant to be a placeholder for your preferred return value in case of an error. For the real Rust implementation of sysexits, you can use https://github.com/sorairolake/sysexits-rs (cargo add sysexits).

What do you think about this feature?

Reordering entries

I would like to have special keys to reorder the entries, for example:

  • Ctrl + K -> move the entry to one entry above
  • Ctrl + J -> same, but one entry below

My reasoning is that I want to sort my notes by their importance/priority.

Related: #264

Copy and Paste from System Clipboard

It would be helpful to have the ability to copy and past from system clipboard. The current workaround using tmux or other terminal emulator built-in isn't that clear and forces the users to use other software to perform a task that can be implemented directly in the application.

The cross platform compatibility is something to consider since we need to make sure it works on X11 and Wayland on Linux and with Windows and Macos as well.

Unknown query parameter

Error: error with configuration: unknown query parameter \C:\Users\asus\Documents\tui-journal\entries.db while parsing connection URL

Caused by:
unknown query parameter \C:\Users\asus\Documents\tui-journal\entries.db while parsing connection URL

Im running windows 11 and I installed the app via cargo command

Update Ratatui to version 0.25

With the new update from Ratatui and the breaking changes in it, we must do some adjustments in the source code for the breaking changes. It's important to do that because textarea doesn't specify it's ratatui version which will take the latest one which leads to compilation errors. See #259

Update Docs

The README and the Wiki needs to be updated after the implementation for the priority and the sort features are done.

Here is the missing features from the documentation:

  • Journals Priorities
  • Default priority in the settings
  • Sort function
  • Command to toggle full screen mode
  • Saving app State

Use Scrollbar for keybindings Overview Popup

The keybindings popup has a lot of information and not all keybindings are shown on smaller terminal windows.
Even though the ability to scroll does exist, it's not obvious for the users and it would be helpful to show a scrollbar when needed.

[Bug Report] Suggested File Name of Exported Journal Incomplete

  • Category: minor / the software basically does what it should do but there might be improvements
  • Steps to reproduce:
    1. start the application
    2. create a journal named "[tjournal] Upgrade to chrono v0.4.26"
    3. export that journal
    4. suggested file name will be "[tjournal] Upgrade to chrono v0.4.txt"
  • Detailed description: as I wrote in some other issues before, I usually take notes on my projects in the application. When entering a title similar to the given one and exporting that journal, I noticed that anything after the second dot in a journal's title will be truncated. This is no major problem, in my opinion, but users might be confused about that behaviour. It might be good to at least document this somewhere.

[Feature Request] Export Option for Active Journal

Thank you for this application, it is very useful to take notes on active projects!

I would like to ask you to add an export option for the currently selected journal such that the entered text can be backed up in a different file as well as be processed by other tools. The entire buffer might be dumped into a plain text file named according to the user's input. One use case might be that a journal is valid source code which should be compiled, e.g. the journal could be written in Markdown and shall be turned into a PDF by Pandoc.

Build In Release Pipeline doesn't work

I the last release I tried the build binaries for it but it failed with different error messages.
This workflow should be rewritten with make file which can be tested separately

Create missing Aeruginous change logs

Since Aeruginous workflow is now completely functional in the repo's workflows, I think it's time to run the for the whole repo and filter out the unwanted entries before the next release.

The notes from this comment are important to achieve that

TUI is not being redrawn

rec_20240105T160923

TUI is not being redrawn if you resize the terminal or change the font size (unless you press a key afterwards).

Settings improvements

The current implementation of the settings module needs the following improvements and fixes:

  • The program should never write the settings file. Currently the program rewrite the settings file if the paths are messing. This behavior could be annoying to the user since it'll overwrite their comments in the settings file.
  • Add a new CLI command to print the current used settings to the command line, and remove the to separated command to get the paths of json and sqlite files
  • Settings module need some refactoring since all the settings and their logic in one source code file

Suggestion

I would like the buffer to be saved automatically upon closing external editor. Quitting vim with :wq then saving the buffer again with s seems unintuitive.

Export/Import functions for multiple journals

After adding the multi-select mode #34 it's now possible to export multiple journals at once and re-import them to other back-end files. Here are the main points:

  • Add export function in the multi-select mode, using the same prompt as for single export with some changes in the UI (Title and description) and the suggested file name.
  • The export file format would be JSON
  • The import format could be a CLI command to call from outside the app. This can be easier to the users since they don't have to type the path from inside the TUI app without the auto-completion support from the shell

[Feature Request] Search

It would be useful to be able to search all journals for some text. For the implementation, I would like to suggest to query the back-end for the search text and to select the (first) journal which contains that text or to highlight all journals' names in the left-hand sidebar which contain that search text.

For the SQL back-end, I would like to suggest to use select title from entries where content like "%{}%" as template for the query in order to determine all matching journals; in order to prevent SQL injections, you could replace all non-alphanumeric characters by the SQL placeholder % in the search text. Note: sqlite3 is not case sensitive regarding text search with placeholders.

Add default priority to app settings

After Adding the priority field to the journal it's useful for the users if they can define their default priority in the setting and this will be the suggestion when the users creates a new journal entry

Visual Mode in Editor

With the new release from tui-textarea it's now possible to implement a mini visual mode in the build-in Editor since it supports selecting and copying the text.

[Feature Request] Sorting

Found tui-journal from nixpkgs and think it's cool. Would love to see a sorting feature. For example:

  • Sort by creation time
  • Sort by last modified time
  • Sort by title

Seems like prior discussion was in #9 (comment) so I'm making a new issue as suggested.

Border colors doesn't work after migrating to ratatui

Border colors for textboxes aren't working anymore. I tested that in the new entry dialog and the validation colors aren't working anymore.

Here are the places to check and fix:

  • input boxes in entry dialog
  • Filter dialog
  • Fuzzy finder dialog
  • Export dialog
  • Multi-Select mode

[Suggestion] Automatic Version Increment and CFF Self-maintenance

Aeruginous v2.2.0 has two new and interesting features: a version incrementing system as well as a CFF release date updater. As we assemble the RONLOG with Aeruginous, anyway, I would like to suggest to also add the version incrementing feature and the CFF release date synchronisation to the RONLOG assembly workflow because I noticed that these aspects became out of sync, somehow.

Your benefit would be that would only need to activate the RONLOG assembly workflow and all hard-coded version numbers in the entire code base would be updated automatically.

[Feature] Fuzzy Finder for the journals

It would be helpful to add a separate fuzzy finder for the journals besides the normal search.

The fuzzy finder and it's results could be built in a separate popup then only the selected journal in the main view will be change according to the fuzzy finder.
I think this approach as simple for the users and for the implementation

Missing Navigation with Arrows in Input Popups

It would be helpful to move between different input controls in the popups with arrow keys beside the tab control since those are the controls that the non-vim users intuitively use.

We have the following popups to fix:

  • Create/Edit Journal popup
  • Filter popup
  • Help popup

Select & Add Existing Tags from Create/Edit Journal Prompt

It would be helpful for users to have a way to add already existing tags to journals without having to type them again.

This could be achieved by creating a prompt inside the create/edit prompt with only a list of the tags inside, where the user can multi-select the tags to add them automatically to the tags text-field.

It's important to solve the case where the users has new tags and wanted to add more tags from the existing ones

[Optimization] Better keybinding help view

Since more functions and keybindings are added, the help popup is getting cluttered with all the information in one page + the view needs scrolling functions for small terminals.

Here are the suggestions to solve these problems:

  • Add tab control in the help view with a tab for each section (general, text-editor, multi-selection, filter view...)
  • Select the corresponding tab from which state the program has when the help-popup is called
  • Implement scrolling functions with arrows and hjlk
  • Closing the popup can be done with <esc>, <Ctrl>c and q
  • Switching between tabs with <tab> and <Shift><tab> and maybe a highlighted letter in each tab to switch to

[Feature] Multi-selection for journals

I think it would be helpful to add a multi-selection mode for the journals-list where the user can toggle the selected journal and perform actions on them (like Delete, or export)

The selection mode could have the following functions:

  • Toggle selection for the current journal <space>
  • Toggle select all a
  • Toggle invert selection i
  • Exit selection mode <Esc> and <Ctrl>c
  • Delete selected journals d
  • Export selected journals >

[Suggestion] CHANGELOG Fragment Creation Once on Release?

Technically, it would suffice to harvest all changes as usual once, on release, such that one big fragment would be generated instead of multiple ones. That fragment would not even be saved in the repository as it would be processed (and, thus, removed) right after its creation during the RONLOG assembly. Aeruginous would therefore harvest all changes from the latest tag on, then.

Would you consider this a useful enhancement, @AmmarAbouZor? If so, I will adjust Aeruginous accordingly and suggest you the corresponding changes to your CI after releasing the respective new version of the tool.

(By the way: the latest version of Aeruginous fixes one of the most annoying bugs RONLOGs had so far -- the random re-ordering during the assembly of a new section; see kevinmatthes/aeruginous-rs#795.)

[Bug] Problems with CLI arguments

When starting the program with defining the path to the backend files the following errors occur:

  1. The file will be overwritten if exists and the data get lost
  2. the backend type doesn't change to the given path type. For example if the backend type is sqlite and the users starts the program with a path to json file, the program will start with sqlite backend using the predefined sqlite path

Use Calendar Widget in Journal Popup

The Journal Popup has the field for the date, and the users can modify it using an input-box with live validation and a hint.
It would be better if we can use the calendar widget their too.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.