Autocomplete now draws from every user's logged exercises, not
just the requesting user's history. New users get suggestions from
day one.
- db.get_all_exercise_names(): case-insensitive grouping, ordered
by usage count desc, alphabetical tiebreak, excludes names that
only appear in soft-deleted workouts.
- server.api_get_exercise_names simplified to a one-liner.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Display workouts as "#N" based on each user's own ordered list of
non-deleted workouts (rank by timestamp ascending). Global auto-
increment id stays the primary key, used only internally and in
exports. User-visible surfaces now all use the per-user number:
- /history listing
- /delete now accepts the per-user number
- Save confirmations (bot text and Mini App toast)
Deleting a workout renumbers the later ones downward, as expected
for a pure display transform.
New db helpers: get_user_workout_number, resolve_user_number, and
get_workouts now includes user_number per row via SQLite window
function.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>