Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@ Extract dates, times, ranges and recurrence periods from reminder text, without

## See it in action

Type a reminder, review the extracted title and time, then confirm. Real screenshots of the Android Compose demo on API 35:
Type a phrase, review the extracted title and time, then add the reminder. A short recording of the Android Compose demo:

| Parsed reminder | Edited and saved | Ambiguous time: manual review |
| --- | --- | --- |
| ![Natural-language reminder parsed as Buy milk at 19:00](website/assets/reminder-preview.png) | ![Confirmed reminder in the session-only list](website/assets/reminder-saved.png) | ![Ambiguous time requires clarification before saving](website/assets/reminder-needs-review.png) |
![Typing Buy milk tomorrow at 7pm, reviewing Buy milk for tomorrow at 19:00, and confirming it in the reminder list](website/assets/reminder-demo.gif)

The demo keeps reminders for the current session; it does not send notifications.

## Installation

Expand Down Expand Up @@ -172,6 +172,12 @@ A range end with no date inherits the start's calendar date. An earlier end cloc

The checked-in `app` module contains an interactive Compose reminder prototype. Run `./gradlew :app:installDebug` with an Android device or emulator, then open **DateParser**. Enter `Buy milk tomorrow at 7pm`, preview the extracted title and date, correct either field using the title editor/date/time pickers, and explicitly add the reminder to a session-only list. Tap an English or Russian example to try it immediately. Editing the input clears the previous preview, so it must be reviewed again. No notifications, account, or database are involved.

Real screenshots on Android API 35:

| Parsed reminder | Edited and saved | Ambiguous time: manual review |
| --- | --- | --- |
| ![Natural-language reminder parsed as Buy milk at 19:00](website/assets/reminder-preview.png) | ![Confirmed reminder in the session-only list](website/assets/reminder-saved.png) | ![Ambiguous time requires clarification before saving](website/assets/reminder-needs-review.png) |

For ambiguous wording such as `Remind me tomorow at 7`, `Buy milk tomorrow 7, please`, or an invalid bare hour such as `tomorrow at 25`, the library rejects the unresolved time instead of quietly scheduling at the reference hour. Supply `7am`, `7pm`, or `19:00`, or select a date and time manually in the demo. A date-only expression such as `tomorrow` still inherits the reference time by design. The preview is always for review; a rule score is not a probability.

The Android screen compiles the **same** `integration/consumer/src/commonMain/kotlin/ReminderDraft.kt` source as the standalone KMP consumer. UI edits and the in-memory list remain Android-only. A parsed range is not silently shortened to a single instant; the screen asks for a single time or manual selection. Manually chosen local times are validated for DST gaps and overlaps before saving.
Expand Down
14 changes: 10 additions & 4 deletions README.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@

## Как это выглядит

Введи напоминание, проверь извлечённое название и время, затем подтверди. Реальные скриншоты Android Compose demo на API 35:
Введи фразу, проверь извлечённое название и время, затем добавь напоминание. Короткая запись работы Android Compose demo:

| Распознанное напоминание | Исправлено и сохранено | Неоднозначное время |
| --- | --- | --- |
| ![Фраза распознана как Buy milk, 19:00](website/assets/reminder-preview.png) | ![Подтверждённое напоминание в списке на время работы приложения](website/assets/reminder-saved.png) | ![Неоднозначное время нужно уточнить перед сохранением](website/assets/reminder-needs-review.png) |
![Ввод Buy milk tomorrow at 7pm, проверка Buy milk на завтра в 19:00 и подтверждение в списке напоминаний](website/assets/reminder-demo.gif)

Демо хранит напоминания на время работы приложения и не отправляет уведомления.

## Подключение

Expand Down Expand Up @@ -166,6 +166,12 @@ python3 scripts/generate_rules.py --check

В модуле `app` есть рабочий Compose-пример: поле для фразы, предварительный результат, редактирование названия и даты/времени, подтверждение и список напоминаний на время работы приложения. Для запуска: `./gradlew :app:installDebug` и открыть **DateParser** на устройстве или эмуляторе. Можно сразу нажать на английский или русский пример. Изменение исходной фразы закрывает предыдущий предпросмотр: новый результат нужно проверить заново. Уведомлений, БД и авторизации нет.

Реальные скриншоты на Android API 35:

| Распознанное напоминание | Исправлено и сохранено | Неоднозначное время |
| --- | --- | --- |
| ![Фраза распознана как Buy milk, 19:00](website/assets/reminder-preview.png) | ![Подтверждённое напоминание в списке на время работы приложения](website/assets/reminder-saved.png) | ![Неоднозначное время нужно уточнить перед сохранением](website/assets/reminder-needs-review.png) |

Для `Buy milk tomorrow at 7pm` показываются название `Buy milk` и дата со временем. Фразы `Remind me tomorow at 7`, `Buy milk tomorrow 7, please` и некорректный час `tomorrow at 25` теперь отклоняются: одиночные числа без точного формата времени не должны приводить к тихому наследованию часов reference. Уточните `7am`, `7pm` или `19:00`, либо выберите дату и время вручную. Одна дата `tomorrow` по-прежнему наследует время reference. Не сохраняйте результат без подтверждения пользователем.

Android-экран использует **тот же** `integration/consumer/src/commonMain/kotlin/ReminderDraft.kt`, что и независимый KMP consumer. UI и список в памяти остаются Android-специфичными. Диапазон времени не сокращается до одной даты молча: экран просит ввести одно время или выбрать его вручную. При ручном выборе проверяются несуществующие и двоякие локальные времена на переходах DST.
Expand Down
Binary file added website/assets/reminder-demo.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 10 additions & 4 deletions website/en/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@ Extract dates, times, ranges and recurrence periods from reminder text, without

## See it in action

Type a reminder, review the extracted title and time, then confirm. Real screenshots of the Android Compose demo on API 35:
Type a phrase, review the extracted title and time, then add the reminder. A short recording of the Android Compose demo:

| Parsed reminder | Edited and saved | Ambiguous time: manual review |
| --- | --- | --- |
| ![Natural-language reminder parsed as Buy milk at 19:00](../assets/reminder-preview.png) | ![Confirmed reminder in the session-only list](../assets/reminder-saved.png) | ![Ambiguous time requires clarification before saving](../assets/reminder-needs-review.png) |
![Typing Buy milk tomorrow at 7pm, reviewing Buy milk for tomorrow at 19:00, and confirming it in the reminder list](../assets/reminder-demo.gif)

The demo keeps reminders for the current session; it does not send notifications.

## Installation

Expand Down Expand Up @@ -177,6 +177,12 @@ A range end with no date inherits the start's calendar date. An earlier end cloc

The checked-in `app` module contains an interactive Compose reminder prototype. Run `./gradlew :app:installDebug` with an Android device or emulator, then open **DateParser**. Enter `Buy milk tomorrow at 7pm`, preview the extracted title and date, correct either field using the title editor/date/time pickers, and explicitly add the reminder to a session-only list. Tap an English or Russian example to try it immediately. Editing the input clears the previous preview, so it must be reviewed again. No notifications, account, or database are involved.

Real screenshots on Android API 35:

| Parsed reminder | Edited and saved | Ambiguous time: manual review |
| --- | --- | --- |
| ![Natural-language reminder parsed as Buy milk at 19:00](../assets/reminder-preview.png) | ![Confirmed reminder in the session-only list](../assets/reminder-saved.png) | ![Ambiguous time requires clarification before saving](../assets/reminder-needs-review.png) |

For ambiguous wording such as `Remind me tomorow at 7`, `Buy milk tomorrow 7, please`, or an invalid bare hour such as `tomorrow at 25`, the library rejects the unresolved time instead of quietly scheduling at the reference hour. Supply `7am`, `7pm`, or `19:00`, or select a date and time manually in the demo. A date-only expression such as `tomorrow` still inherits the reference time by design. The preview is always for review; a rule score is not a probability.

The Android screen compiles the **same** `integration/consumer/src/commonMain/kotlin/ReminderDraft.kt` source as the standalone KMP consumer. UI edits and the in-memory list remain Android-only. A parsed range is not silently shortened to a single instant; the screen asks for a single time or manual selection. Manually chosen local times are validated for DST gaps and overlaps before saving.
Expand Down
2 changes: 2 additions & 0 deletions website/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,5 @@ English and Russian · Android, JVM and iOS.
- [English documentation](en/index.md)
- [Документация на русском](ru/index.md)
- [Source code / Исходники](https://github.com/Alox1d/dateparser-kotlin)

![From a phrase to a reviewed and confirmed reminder / Из фразы в проверенное и подтверждённое напоминание](assets/reminder-demo.gif)
14 changes: 10 additions & 4 deletions website/ru/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@ description: Парсер дат и времени из текста для Kotl

## Как это выглядит

Введи напоминание, проверь извлечённое название и время, затем подтверди. Реальные скриншоты Android Compose demo на API 35:
Введи фразу, проверь извлечённое название и время, затем добавь напоминание. Короткая запись работы Android Compose demo:

| Распознанное напоминание | Исправлено и сохранено | Неоднозначное время |
| --- | --- | --- |
| ![Фраза распознана как Buy milk, 19:00](../assets/reminder-preview.png) | ![Подтверждённое напоминание в списке на время работы приложения](../assets/reminder-saved.png) | ![Неоднозначное время нужно уточнить перед сохранением](../assets/reminder-needs-review.png) |
![Ввод Buy milk tomorrow at 7pm, проверка Buy milk на завтра в 19:00 и подтверждение в списке напоминаний](../assets/reminder-demo.gif)

Демо хранит напоминания на время работы приложения и не отправляет уведомления.

## Подключение

Expand Down Expand Up @@ -171,6 +171,12 @@ python3 scripts/generate_rules.py --check

В модуле `app` есть рабочий Compose-пример: поле для фразы, предварительный результат, редактирование названия и даты/времени, подтверждение и список напоминаний на время работы приложения. Для запуска: `./gradlew :app:installDebug` и открыть **DateParser** на устройстве или эмуляторе. Можно сразу нажать на английский или русский пример. Изменение исходной фразы закрывает предыдущий предпросмотр: новый результат нужно проверить заново. Уведомлений, БД и авторизации нет.

Реальные скриншоты на Android API 35:

| Распознанное напоминание | Исправлено и сохранено | Неоднозначное время |
| --- | --- | --- |
| ![Фраза распознана как Buy milk, 19:00](../assets/reminder-preview.png) | ![Подтверждённое напоминание в списке на время работы приложения](../assets/reminder-saved.png) | ![Неоднозначное время нужно уточнить перед сохранением](../assets/reminder-needs-review.png) |

Для `Buy milk tomorrow at 7pm` показываются название `Buy milk` и дата со временем. Фразы `Remind me tomorow at 7`, `Buy milk tomorrow 7, please` и некорректный час `tomorrow at 25` теперь отклоняются: одиночные числа без точного формата времени не должны приводить к тихому наследованию часов reference. Уточните `7am`, `7pm` или `19:00`, либо выберите дату и время вручную. Одна дата `tomorrow` по-прежнему наследует время reference. Не сохраняйте результат без подтверждения пользователем.

Android-экран использует **тот же** `integration/consumer/src/commonMain/kotlin/ReminderDraft.kt`, что и независимый KMP consumer. UI и список в памяти остаются Android-специфичными. Диапазон времени не сокращается до одной даты молча: экран просит ввести одно время или выбрать его вручную. При ручном выборе проверяются несуществующие и двоякие локальные времена на переходах DST.
Expand Down
Loading