Commit Graph
100 Commits
Author SHA1 Message Date
Jens KrauseandGitHub 2277eeb033 feat(localtime): date (#111)
* feat(localtime): date

* update demo
2025-09-30 13:24:45 +02:00
Jens KrauseandGitHub cb6c2d5142 feat(edit): 10x up/down (#110)
* feat(edit): 10x up/down

* fix `MAX_DURATION` (decisecond)

* footer: add `edit 10x` keybindings

* README: update keybindings
2025-09-30 12:38:25 +02:00
Jens KrauseandGitHub 6dc7eb81c2 fix(editable): auto jump to next possible editable while decreasing, but ignoring zero values (#109)
* extract `format_by_duration`

* fix(editable): switch to next ignoring zero values
2025-09-29 20:48:19 +02:00
Jens KrauseandGitHub 816741f842 improve format handling + fix days rendering (#107)
* render_(format) functions, compact `YyyDddHhMmSs`

* compact rendering of other formats

* add `YDHhMmSs`+`YDdHhMmSs` formats

* tests for `YDHhMmSs`+`YDdHhMmSs`

* `YyDHhMmSs` + `YyDdHhMmSs`

* `YyyDHhMmSs` + `YyyDdHhMmSs`

* fix `edit_up` to compare `years` properly

and add `test_edit_up_overflow_protection`

* fix rendering `Format::YyyDdHhMmSs`
2025-09-29 16:08:34 +02:00
jk 40eb602953 tests 2025-09-28 10:40:34 +02:00
jk d5bf7f32a6 feat(timer|c-dwn): show/edit years + days 2025-09-28 10:40:34 +02:00
jk 9ff65e5c8e feat(duration): days and years 2025-09-28 10:40:34 +02:00
Jens KrauseandGitHub 24eb471df8 Contributing guidelines (initial version) (#94) 2025-09-26 17:07:34 +02:00
Jens KrauseandGitHub 0521c57695 Rust 1.90.0 (#95)
* Rust 1.90.0

* Make sound work again on Linux

Reverts changes of #77. It works before, but errors after updating to
Rust 1.90.0 and to latest Nix packages.
2025-09-26 17:05:28 +02:00
jk f9a2e18179 ignore claude 2025-09-02 11:26:03 +02:00
Jens KrauseandGitHub bac2e356e1 Prepare v1.4.0 (#92)
* Prepare v1.4.0

* cargo build
2025-09-02 11:19:07 +02:00
Jens KrauseandGitHub 60392b40ed demo: local time (#91) 2025-08-30 22:06:51 +02:00
Jens KrauseandGitHub 901cf69472 feat(screen): LocalTime (#90) 2025-08-30 21:48:56 +02:00
Jens KrauseandGitHub c494f0e829 refactor(footer): AppTimeFormat data handling (#89)
- Extract local state of `app_time_format` from `footer` to have it globally available
- Add a deserialization fallback for deprecated `AppTimeFormat::Hidden`
- Persist `footer_app_time` toggle state
2025-08-27 19:44:02 +02:00
Jens KrauseandGitHub 637c1da21b Rust 1.89.0 (#87) 2025-08-15 11:43:17 +02:00
Jens KrauseandGitHub 3439e4aa8d Prepare v1.3.1 (#86)
* bump v1.3.1

* update CHANGELOG

* start workflow by `release/*` branches only but not by tags to avoid overriding releases.
2025-07-03 11:01:51 +02:00
jk 5bc37f005f lint again
in addition to #88, especially 78f5269
2025-06-28 11:49:21 +02:00
Jens KrauseandGitHub bfa40fd8f1 Rust 1.88.0 (#85)
* Rust 1.88.0

* nix flake update

* cargo upgrade

* lint

all `uninlined_format_args` related
@see https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
2025-06-28 11:39:22 +02:00
Jens KrauseandGitHub 93a3cde396 Rust 1.87.0 (#84)
* Rust 1.87.0

* nix flake update

* update CHANGELOG

* cargo upgrade

name         old req compatible latest new req
====         ======= ========== ====== =======
color-eyre   0.6.2   0.6.5      0.6.5  0.6.5
tokio        1.41.1  1.45.1     1.45.1 1.45.1
tokio-stream 0.1.16  0.1.17     0.1.17 0.1.17
tokio-util   0.7.12  0.7.15     0.7.15 0.7.15
clap         4.5.23  4.5.39     4.5.39 4.5.39
time         0.3.37  0.3.41     0.3.41 0.3.41
notify-rust  4.11.4  4.11.7     4.11.7 4.11.7
thiserror    2.0.11  2.0.12     2.0.12 2.0.12
2025-06-09 17:00:31 +02:00
Jens KrauseandGitHub d27587a44a fix(pomodoro): ctrl+r resets rounds + both clocks (#83) 2025-05-20 10:01:29 +02:00
Jens KrauseandGitHub 5f4c5bb8ed (pomodoro) reset active clock only (#82)
It reverts changes of https://github.com/sectore/timr-tui/pull/76/commits/cc35f20f3e2d21dbb13792683cb078852e1c5b1c
2025-05-13 11:00:56 +02:00
Jens KrauseandGitHub 44af71c01c (args) set content by given duration (#81) 2025-05-12 12:14:27 +02:00
Jens KrauseandGitHub c370d3096b Prepare v1.3.0 (#80)
* Prepare v1.3.0
* readme: fix keybindings
* update changelog
2025-05-06 11:46:29 +02:00
jk aae5c38cd6 fix(footer): hide option to save initial value
for timer. Available 4 pomodoro + countdown only.
2025-05-06 11:25:29 +02:00
jk 5ad09b9848 (demo) update menu 2025-05-02 12:52:35 +02:00
Jens KrauseandGitHub 52ed8267be (pomodoro/countdown) Change initial value (#79)
- While editing, an user can apply changes as a new initial value (pomodoro/countdown only).
- New keybinding: `[^s]save initial value` 
- Update keybinding: `[s]ave changes` (instead of `[Enter]`)
- Refactor event handling to re-structure `edit` / `non-edit` modes.
- Refactor footer to reflect latest keybindings
2025-05-02 12:39:26 +02:00
jk 6b068bbd09 fix(pomodoro) add empty line to keep content
centered vertically comparing to other views (which have one label below the clock only)

In addition to #75.
2025-04-30 14:27:30 +02:00
Jens KrauseandGitHub c96432779a (readme) add keybindings + toc (#78)
* (readme) add keybindings + toc
* update LICENSE
2025-04-30 14:19:13 +02:00
Jens KrauseandGitHub 509cf73cdd (flake) use alsa-lib-with-plugins (#77)
by following an idea from @camuward mentioned here https://github.com/143mailliw/muzak/pull/28#issuecomment-2833601152

Incl. another `nix flake update`.
2025-04-30 12:12:03 +02:00
Jens KrauseandGitHub e6291a3131 Update keybindings (#76)
* (pomodoro) reset both clocks at once

* quit app by pressing `q` only

* (countdown) enter/esc keybindings

* (timer) enter/esc keybindings

* (pomodoro) enter/esc keybindings

* update footer label

* fix(coundown): don't reset elapsed clock

while skipping editing changes

* fix(clock): order of actions matters for ESC

handling. Set `pause` instead of `initial` mode while toggeling back.

* fix(timer): order of actions matters (ESC key)

* (footer) update order, lowercase standard keys
2025-04-30 11:11:33 +02:00
Jens KrauseandGitHub 90d9988e7a (pomodoro) count WORK rounds (#75) 2025-04-29 16:20:02 +02:00
Jens KrauseandGitHub 028a067419 Prepare v1.2.1 (#74) 2025-04-17 12:26:13 +02:00
jk 675428cfb0 Update README 2025-04-17 08:31:40 +02:00
Jens KrauseandGitHub 28c5d7194c Rust 1.86.0 (#73) 2025-04-13 21:37:47 +02:00
Jens KrauseandGitHub 5b445afe25 fix(countdown): reset MET while editing by local time (#72) 2025-04-13 21:17:56 +02:00
jk beb12d5ec2 just: run with args 2025-04-13 19:19:46 +02:00
Jens KrauseandGitHub d9399eafc9 fix(countdown): Reset MET if countdown is set by cli arguments (#71)
* fix: Reset MET if countdown is set by args

* update CHANGELOG
2025-03-03 12:21:17 +01:00
Jens KrauseandGitHub ffad78e093 fix(just): group commands (#70) 2025-02-26 14:58:54 +01:00
jk e7a5a1b2da exclude files for packaging 2025-02-26 12:31:18 +01:00
Jens KrauseandGitHub 6f0df4d488 Prepare v1.2.0 (#69)
* prepare v1.2.0

* update README

* update justfile
2025-02-26 12:11:54 +01:00
Jens KrauseandGitHub 3d9b235f12 Rust 1.85.0 + Rust 2024 Edition (#68)
- Add `rust-toolchain.toml`
- Refactor `flake` to consider `rust-toolchain.toml`, especially Rust version
- `just`: Add run-sound command
- Ignore sound files
- Format
2025-02-25 20:30:20 +01:00
jk e094d7d81b feat(logging): add --log arg to enable logs
and/or to pass a custom log directory.
2025-02-06 20:33:52 +01:00
Jens KrauseandGitHub 843c4d019d set_panic_hook (#67) 2025-02-06 11:16:04 +01:00
Jens KrauseandGitHub e95ecb9e9c feat(notification): Animate (blink) clock entering done mode (#65)
Optional.
2025-02-05 19:29:56 +01:00
Jens KrauseandGitHub 886deb3311 fix(notification): remove callbacks in favour of mpsc messaging (#64) 2025-02-05 13:35:24 +01:00
Jens KrauseandGitHub 7ff167368d --features sound (#63)
to enable `sound` notification for local builds only. Needed to avoid
endless issues by building the app for different platforms. Sound
support can be hard.
2025-02-04 17:39:50 +01:00
Jens KrauseandGitHub a54b1b409a feat(clock): sound notification (experimental) (#62) 2025-02-04 17:28:41 +01:00
Jens KrauseandGitHub 8f50bc5fc6 AppEvent (#61)
Extend `events` to provide a `mpsc` channel to send `AppEvent`'s from
anywhere in the app straight to the `App`.
2025-02-04 15:05:02 +01:00
Jens KrauseandGitHub d3c436da0b feat: native desktop notifications (experimental) (#59)
* desktop notification by entering `Mode::DONE` for `countdown` and `pomodoro`

* remove redundant `on_done_called` check

* remove build warning (release only)

* log notification errors

* cli arg to enable desktop notifications

* persistant notification settings

* ctrl shortcut

* update changelog

* max timer notification
2025-01-28 19:28:34 +01:00
jk 97787f718d remove editor settings (zed) 2025-01-26 18:49:14 +01:00
Jens KrauseandGitHub 557fcf95f0 Prepare v1.1.0 (#58) 2025-01-22 10:55:20 +01:00
Jens KrauseandGitHub ec18da0664 fix(ci): remove magic nix cache action (#57) 2025-01-22 09:56:28 +01:00
Jens KrauseandGitHub 59c99f4f5c fix(build): statically linked binaries for linux (#55) 2025-01-22 09:43:51 +01:00
Jens KrauseandGitHub 6d2bf5ac09 Edit countdown by local time (#49) 2025-01-13 18:44:56 +01:00
Jens KrauseandGitHub b1efb1eb62 rust 1.84, update deps (#48)
- `nix flake update`
- `cargo update`
2025-01-11 16:48:37 +01:00
Jens KrauseandGitHub 4ee5d7b4e9 Prepare v1.0.0 (#47)
* update README
* update CHANGELOG
* update demo
* bump v1.0.0
2025-01-10 16:36:57 +01:00
Jens KrauseandGitHub 9ea9f88266 feat(countdown): persist elapsed time (#46) 2025-01-10 16:01:03 +01:00
Jens KrauseandGitHub c8af76c9e5 feat(countdown): rocket countdown (#45) 2025-01-08 18:52:18 +01:00
Jens KrauseandGitHub 468b4a5abf simplify style settings, improve naming (#44)
* simplify style settings by passing `style` directly to Widgets. No need to store it in `state` of widgets.
* remove unneeded things
* naming (state vs. widgets)
2025-01-07 19:02:57 +01:00
Jens KrauseandGitHub 8603a823e4 fix(footer): 12-hour format incl. tests (#43) 2025-01-06 19:22:02 +01:00
Jens KrauseandGitHub 94bdeeab11 feat(footer): show local time (#42) 2025-01-06 18:31:22 +01:00
jk 568515f65f add changelog 2025-01-03 16:34:00 +01:00
jk ec297d4f37 enable ci workflows 2025-01-03 16:26:39 +01:00
Jens K.andGitHub ea59a72cd0 Prepare release workflow (#40) 2025-01-03 16:21:38 +01:00
Jens K.andGitHub 847367f51e Prepare publish (#39)
* refactor!: rename `.data` and `.log` files
   - `timr.data` -> `app.data`
   - `timr.log` -> `app.log`
* refactor!: rename app name `timr` -> `timr-tui`
* docs: update README (paths, names, installation)
* update Cargo.toml
* fix(release): warning: unused variable: `log_dir`
2025-01-02 12:16:56 +01:00
jk f3a6e073e2 don't restrict countdown edit
(see #33)
2025-01-01 18:51:24 +01:00
jk e4dcf61153 move parse_duration into duration module 2025-01-01 18:23:19 +01:00
Jens K.andGitHub a4f8885eb1 feat(cli): arg --menu (#37)
- Add `--menu` to args
- Add `--version` to args
- Change default behavior: At a first run of the app, the menu will be shown by default (similar to what @tschinz suggested in #33). However, if an user hides the menu later and closes the app, the menu will be hidden again with a next start. Just because the app restores the last app state.
2025-01-01 15:13:10 +01:00
Jens K.andGitHub e674314207 fix(cli): invalid format of --help output (#36) 2025-01-01 14:51:12 +01:00
Jens K.andGitHub 7312ad51d8 fix: use data_local_dir if state_dir not found (#31)
Fixes #30
2024-12-30 19:56:27 +01:00
jk 88293898f6 clippy 2024-12-28 13:23:38 +01:00
jk 75fadb3aff format 2024-12-28 13:23:25 +01:00
jk 7206714f96 extract Content into common 2024-12-28 13:18:43 +01:00
Jens K.andGitHub 9bfe4e528b extract clock elements (#28)
Few tests. Extract `Style` to `common`.
2024-12-28 12:32:27 +01:00
Jens K.andGitHub d56434f2de demo time (#27) 2024-12-27 18:59:33 +01:00
jk 5eb831457b progressbar: remove label 2024-12-27 18:34:56 +01:00
jk 49365d3db4 fix: tick timer 2024-12-27 18:34:12 +01:00
jk 0673b8e1dd update README 2024-12-26 20:06:28 +01:00
jk 3ea715f83b fix: initial values via args 2024-12-26 20:03:55 +01:00
Jens K.andGitHub ca81094a36 fix edits (#26)
incl. editing `deciseconds` + more tests
2024-12-26 20:03:22 +01:00
jk ed7c17caf9 DurationEx 2024-12-26 15:14:41 +01:00
Jens K.andGitHub ae1a48e5e8 Progressbar (#25)
* Progressbar
* header
* label
* border
2024-12-25 12:21:36 +01:00
Jens K.andGitHub acb627b1d7 Add styles: Light, Medium, Dark, Braille (#24)
* add `Style::Braille`, use ratatui's shades/arrows

* update args

* update README
2024-12-23 15:13:06 +01:00
Jens K.andGitHub d86f8905f2 Cleanup (#23)
* simplify footer

* improve: &T vs. &mut T

* remove header

* adjust table space

* update README
2024-12-23 14:24:15 +01:00
Jens K.andGitHub 98ee2bc16b menu: appearance + controls (#22) 2024-12-23 10:39:53 +01:00
Jens K.andGitHub c9b444e91a Persist app state (#21) 2024-12-22 18:56:55 +01:00
Jens K.andGitHub 2cf411e2ae more args: mode, style, decis (#20) 2024-12-21 18:00:46 +01:00
Jens K.andGitHub d705f20e2d deciseconds (#19) 2024-12-21 16:50:26 +01:00
Jens K.andGitHub ab10a38901 clock style (#18) 2024-12-18 13:51:22 +01:00
Jens K.andGitHub 3c9ae881c9 Editable timer (#17) 2024-12-18 08:49:57 +01:00
Jens K.andGitHub 3e278d63c5 refactor format (#16) 2024-12-18 08:29:07 +01:00
Jens K.andGitHub 8ddbc77baf handle hours (#15) 2024-12-17 11:16:53 +01:00
Jens K.andGitHub b7d6a6c139 Args (#14) 2024-12-14 18:24:51 +01:00
Jens K.andGitHub 6c7bedabe3 Pipe events into subviews (#13)
and match only unhandled events afterwards
2024-12-12 18:43:12 +01:00
Jens K.andGitHub 64300631c7 Editable Countdown (#12)
- Editable `Countdown`
- ASCII Symbols for `Clock` states
- Update labels
2024-12-12 14:16:05 +01:00
Jens K.andGitHub 4c38ac368e Pomodoro (editable) (#11) 2024-12-12 09:00:36 +01:00
jk 709224b31f unstable just 2024-12-06 16:05:28 +01:00
jk ec02821825 test: center|horizontal|vertical 2024-12-06 16:05:00 +01:00
jk 04d3dced63 src/clock.rs -> src/widgets/clock.rs 2024-12-06 15:24:23 +01:00
Jens K.andGitHub 929e453d85 ClockWidget (#10) 2024-12-05 17:25:09 +01:00