Commit graph

37 commits

Author SHA1 Message Date
8d34ae5267 chore: bump version to 1.2.5 (versionCode 4)
Includes widget scroll support, completed tasks sorting, and
esbuild vulnerability fix.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 11:27:13 -04:00
0462b5a50b Merge pull request 'fix: sort completed main tasks to bottom of list (#15)' (#18) from fix/simpl-liste-15-sort-completed-tasks into master 2026-03-08 15:26:01 +00:00
2a7b70c65c Merge pull request 'fix: add scroll support in medium/large widgets (#11)' (#14) from fix/simpl-liste-11-widget-scroll into master 2026-03-08 15:25:16 +00:00
6c1bd043e6 Merge pull request 'fix: resolve esbuild vulnerability via npm override (#16)' (#17) from fix/simpl-liste-16-esbuild-vulnerability into master 2026-03-08 15:25:15 +00:00
2d9440b05c Sort completed main tasks to the bottom of the list
Add asc(tasks.completed) as the primary sort key in getOrderClauses()
so completed tasks always appear after active ones regardless of the
chosen sort mode (position, priority, dueDate, title, createdAt).

Also apply the same completed-first ordering to:
- getSubtasks() in tasks.ts
- noDateTasks query in widgetSync.ts
- subtasks query in widgetSync.ts

Ref: simpl-liste#15

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 11:04:32 -04:00
ce21337042 Add npm override to force esbuild ^0.25.0 across all dependencies
The transitive dependency chain drizzle-kit -> @esbuild-kit/esm-loader ->
@esbuild-kit/core-utils pulled in esbuild@0.18.20 which is vulnerable to
GHSA-67mh-4wv8-2f99. Adding an npm override forces all nested esbuild
instances to use ^0.25.0, resolving all 4 moderate audit findings.

Ref: simpl-liste#16

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 11:02:46 -04:00
le king fu
661ac0aa33 Add scrollable task list in medium/large widgets
Replace FlexWidget with ListWidget for the task list in medium and
large home screen widgets, enabling scroll when items exceed the
widget display area.

Fixes #11

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 17:56:13 -05:00
le king fu
fa037e9eef fix: increase touch targets for header buttons (#10)
Buttons (X, back, save, delete, export) had ~28px hit areas,
causing missed taps. Increased padding to p-2.5 + hitSlop for
~44px touch targets. Bump version to 1.2.4.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 10:22:54 -05:00
le king fu
a8efb82b3a Add missing .gitignore patterns (.env, .env.*)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 20:48:06 -05:00
le king fu
bf7c954528 Fix HIGH vulnerability (minimatch ReDoS)
npm audit fix to resolve ReDoS in minimatch.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 20:27:04 -05:00
le king fu
64cd7bc896 chore: bump version to 1.2.3
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 17:28:09 -05:00
le king fu
f2fe141737 fix: use react-native-keyboard-controller for reliable keyboard handling (#6)
Replace manual keyboard listeners and RN KeyboardAvoidingView with
react-native-keyboard-controller which handles edge-to-edge correctly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 17:18:45 -05:00
le king fu
360310e99f fix: replace KeyboardAvoidingView with manual keyboard padding (#6)
KeyboardAvoidingView does not work with edgeToEdgeEnabled on Android.
New approach: listen to Keyboard events, dynamically set spacer height
to actual keyboard height, and scrollToEnd when subtask input is focused.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 14:40:58 -05:00
le king fu
9835f9ef18 fix: use KeyboardAvoidingView behavior="padding" on Android (#6)
edge-to-edge mode disables classic adjustResize, so behavior must be
"padding" on both platforms to push content above the keyboard.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 12:25:30 -05:00
le king fu
fe7bda4747 fix: disable KeyboardAvoidingView on Android, sync widget on app start (#6, #9)
- Set KeyboardAvoidingView behavior to undefined on Android to avoid
  conflict with native adjustResize (was causing double-resize)
- Call syncWidgetData() at app startup to populate subtasks in widget cache
- Keyboard.addListener + adjustResize handles scroll correctly on Android

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 12:07:34 -05:00
le king fu
3efb7a1cb0 chore: bump version to 1.2.1
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 11:29:48 -05:00
le king fu
a03085c768 fix: keyboard scroll via Keyboard listener, bigger widget expand button (#6, #9)
- Replace unreliable setTimeout scroll with Keyboard.addListener('keyboardDidShow')
- Track subtask input focus state to scroll only when relevant
- Increase bottom spacer from h-32 to h-80 for more scroll room
- Enlarge expand/collapse button (32px with background) and arrow (fontSize 18)
- Ensure subtasks array is always initialized in widget handler

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 11:04:38 -05:00
le king fu
55e02e1b3a chore: bump version to 1.2.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:43:44 -05:00
le king fu
117de533d7 fix: subtask input scroll + widget expand/collapse subtasks (#6, #9)
- Fix keyboard hiding subtask input: use precise scrollTo with onLayout position instead of unreliable scrollToEnd (#6)
- Add expand/collapse button in widget for tasks with subtasks (#9)
- Subtasks are now toggleable directly from the widget
- Widget state (expanded tasks) persisted via AsyncStorage
- Update CLAUDE.md with widget docs, build/deploy process, and release workflow

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:27:21 -05:00
le king fu
2412d368ac chore: bump version to 1.1.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 17:18:09 -05:00
le king fu
f61ce64b50 feat: show subtask progress in Android widget (#9)
- Add subtaskCount/subtaskDoneCount to WidgetTask with correlated SQL subqueries
- Display subtask indicator (✓ done/total) below task title in widget rows
- Update type guard for new fields in headless handler

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 16:47:47 -05:00
le king fu
72eafbd9d9 fix: prevent double-tap save, add subtasks at creation, fix keyboard overlap (#7, #8, #6)
- Add saving guard to prevent duplicate task creation on rapid taps
- Add pending subtasks UI to new task screen with local add/remove
- Wrap both task screens in KeyboardAvoidingView with scrollToEnd on subtask focus

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 16:27:03 -05:00
le king fu
e6ac92e745 feat: widget dark mode, update checker, contact button (v1.0.1)
- Widget adapts to app theme (light/dark/system) via AsyncStorage
- Add "Check for updates" button querying Forgejo releases API
- Add "Contact us or report a bug" mailto link in settings
- Bump version to 1.0.1

Closes #1, closes #2, closes #3

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 20:33:17 -05:00
le king fu
c58a4dce2d feat: add list selector to task detail screen
Allow viewing and changing a task's list from the task detail page.
Uses the same chip-style selector with list icons and colors as the
new task screen.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 20:55:29 -05:00
le king fu
d31b6f45fc feat: add custom app icon and adjust medium widget to 2x4
Replace Expo placeholder icons with a custom checklist icon using the
app's color palette (cream, teal blue, terracotta). Change medium widget
from 4x2 to 2x4 with horizontal resize support.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 14:12:22 -05:00
le king fu
e6867d84b3 feat: change medium widget to 2x4, show list color indicator
Change medium widget from 4x2 (wide) to 2x4 (tall) with horizontal
resize support. Add a colored vertical bar before each task showing the
list color for quick visual identification.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 13:42:44 -05:00
le king fu
0ebc340f37 fix: add input validation and deep link sanitization
Validate UUID format on all route params to prevent arbitrary DB queries
from malicious deep links. Truncate user input (titles, notes, names) to
safe lengths, clamp priority to [0,3], validate recurrence values, and
add schema validation on widget JSON data.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 10:13:05 -05:00
le king fu
9c6d2dfef9 feat: add Android widget for task overview (3 sizes)
Adds home screen widgets (Small 2×2, Medium 4×2, Large 4×4) using
react-native-android-widget. Widgets display upcoming tasks sorted by
urgency, support tap-to-complete and deep linking into the app, and
refresh on every task mutation + every 30 minutes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 09:47:15 -05:00
le king fu
3558171bb9 feat: add client-side task search in inbox and list detail
Search icon in toolbar opens a text input that filters tasks by title
and notes in real-time. Drag-to-reorder is disabled while searching.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 08:53:02 -05:00
le king fu
4d62658ae7 feat: add swipe actions and drag-to-reorder for tasks and lists
Replace static delete buttons with swipe gestures (left to delete, right
to complete) and add drag-to-reorder support using react-native-draggable-flatlist.
Inbox is pinned at top of lists tab with a GripVertical drag handle for
custom lists. Polling is paused during drag operations to prevent state conflicts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 08:43:34 -05:00
le king fu
47f698d86b feat: add notifications, calendar sync, and ICS export
- Scheduled task reminders via expo-notifications with configurable
  offset (at time, 1h, 3h, 1 day before)
- Optional calendar sync via expo-calendar (creates/updates/removes
  events in a dedicated Simpl-Liste calendar)
- ICS export with RRULE support for inbox, lists, and individual tasks
- New migration adding calendar_event_id to tasks table
- Settings UI for notifications toggle, reminder offset, and calendar sync
- Export buttons in inbox toolbar, list header, and task detail

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 08:09:57 -05:00
le king fu
f8523b8a6c docs: add CLAUDE.md and masterplan for project reference
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 21:50:45 -05:00
le king fu
2e86835e44 feat: add color and icon pickers for lists
Replace inline list creation with a modal supporting color palette and
icon grid selection. Long-press to edit existing lists. Display chosen
icon/color in list rows, detail header, and task creation chips.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 21:44:15 -05:00
le king fu
5fc1365ced feat: add Phase 2 — tags, sort, filters, recurrence
- Tags: create/edit/delete tags with color picker modal, assign to tasks
- Sort: sort tasks by position, priority, due date, title, created date
- Filters: filter by status, priority, due date, tag
- Recurrence: daily/weekly/monthly/yearly with auto-creation on completion
- Fix removeTagFromTask bug (was deleting all tags instead of specific one)
- Tag editor redesigned as modal for better keyboard UX

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 20:54:06 -05:00
le king fu
72f4a50e2b fix: list navigation, crypto polyfill, SQL transformer, dark mode priorities
- Clicking a list now shows its tasks instead of opening new task form
- Add list/[id] detail screen
- Replace crypto.randomUUID() with expo-crypto (Hermes compatibility)
- Add SQL transformer for Drizzle migration files
- Improve priority color visibility in dark mode (lighter variants)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 20:15:49 -05:00
le king fu
0526a47900 feat: initial Simpl-Liste MVP
Task management app with Expo/React Native:
- 3 tabs: Inbox, Lists, Settings
- Task CRUD with subtasks, priorities, due dates
- SQLite database via Drizzle ORM
- i18n FR/EN (French default)
- Dark mode support (light/dark/system)
- Simpl- brand color palette (bleu/crème/terracotta)
- NativeWind (Tailwind) styling
- EAS Build config for Android (APK + AAB)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 19:28:42 -05:00
le king fu
0dc15a8c25 Initial commit
Generated by create-expo-app 3.5.3.
2026-02-20 19:08:56 -05:00