From 1b443397788d4bb419dd5105aec1ceba7b2cd31c Mon Sep 17 00:00:00 2001 From: j-atkins <106238905+j-atkins@users.noreply.github.com> Date: Mon, 2 Mar 2026 10:08:25 +0000 Subject: [PATCH 1/2] handle small bug, multiples of 5 for copying times from previous wp --- src/virtualship/cli/_plan.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/virtualship/cli/_plan.py b/src/virtualship/cli/_plan.py index f265886f..d8cb7ec1 100644 --- a/src/virtualship/cli/_plan.py +++ b/src/virtualship/cli/_plan.py @@ -872,7 +872,15 @@ def copy_from_previous(self) -> None: prev = schedule_editor.query_one(f"#wp{self.index - 1}_{comp}") curr = self.query_one(f"#wp{self.index}_{comp}") if prev and curr: - curr.value = prev.value + if ( + comp == "minute" + ): # special handle minute, round to nearest 5 for compatibility with options + minute_value = prev.value + if minute_value % 5 != 0: + minute_value = 5 * round(minute_value / 5) + curr.value = minute_value + else: + curr.value = prev.value for instrument in [ inst for inst in InstrumentType if not inst.is_underway From e0de29c229cfda63ae4b6ebd58f34fda37d4e333 Mon Sep 17 00:00:00 2001 From: j-atkins <106238905+j-atkins@users.noreply.github.com> Date: Mon, 2 Mar 2026 10:19:09 +0000 Subject: [PATCH 2/2] fix time adjustment button logic after copying from previous wp --- src/virtualship/cli/_plan.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/virtualship/cli/_plan.py b/src/virtualship/cli/_plan.py index d8cb7ec1..97dbc7d2 100644 --- a/src/virtualship/cli/_plan.py +++ b/src/virtualship/cli/_plan.py @@ -893,6 +893,17 @@ def copy_from_previous(self) -> None: ) if prev_switch and curr_switch: curr_switch.value = prev_switch.value + + # hard update self.waypoint.time to match new values as shown in UI + year = int(self.query_one(f"#wp{self.index}_year").value) + month = int(self.query_one(f"#wp{self.index}_month").value) + day = int(self.query_one(f"#wp{self.index}_day").value) + hour = int(self.query_one(f"#wp{self.index}_hour").value) + minute = int(self.query_one(f"#wp{self.index}_minute").value) + self.waypoint.time = datetime.datetime( + year, month, day, hour, minute, 0 + ) + except Exception as e: raise UnexpectedError(unexpected_msg_compose(e)) from None