← Back to task

Commit 10576f0e

commit 10576f0e894c1ff5a76aee13a4c71e785e227939
Author: Ben Sima <ben@bensima.com>
Date:   Wed Nov 26 13:41:07 2025

    Jr: Sequential task IDs
    
    All tests pass and the feature is working correctly. The sequential
    task
    
    1. **Implementation**: Already present in `Omni/Task/Core.hs` with
    `gene 2. **Integration**: `jr task` commands use `Omni/Task.main`
    which levera 3. **Testing**: Added a new test `"generateId produces
    sequential IDs"`
    
    Task-Id: t-1o2g8gu9y2z

diff --git a/Omni/Task.hs b/Omni/Task.hs
index 3f21b809..117d8625 100644
--- a/Omni/Task.hs
+++ b/Omni/Task.hs
@@ -562,7 +562,6 @@ unitTests =
           Just t -> taskId t Test.@?= lowerId
           Nothing -> Test.assertFailure "Should find task with lowercase ID",
       Test.unit "generateId produces valid ID" <| do
-        -- This verifies that generated IDs are valid and accepted
         tid <- generateId
         let task = Task tid "Auto" WorkTask Nothing Nothing Open P2 [] Nothing (read "2025-01-01 00:00:00 UTC") (read "2025-01-01 00:00:00 UTC")
         saveTask task
@@ -570,6 +569,21 @@ unitTests =
         case findTask tid tasks of
           Just _ -> pure ()
           Nothing -> Test.assertFailure "Should find generated task",
+      Test.unit "generateId produces sequential IDs" <| do
+        tid1 <- generateId
+        tid2 <- generateId
+        tid3 <- generateId
+        T.isPrefixOf "t-" tid1 Test.@?= True
+        T.isPrefixOf "t-" tid2 Test.@?= True
+        T.isPrefixOf "t-" tid3 Test.@?= True
+        let num1 = readMaybe (T.unpack (T.drop 2 tid1)) :: Maybe Int
+            num2 = readMaybe (T.unpack (T.drop 2 tid2)) :: Maybe Int
+            num3 = readMaybe (T.unpack (T.drop 2 tid3)) :: Maybe Int
+        case (num1, num2, num3) of
+          (Just n1, Just n2, Just n3) -> do
+            (n2 == n1 + 1) Test.@?= True
+            (n3 == n2 + 1) Test.@?= True
+          _ -> Test.assertFailure "IDs should be sequential integers",
       Test.unit "lowercase ID does not clash with existing uppercase ID" <| do
         -- Setup: Create task with Uppercase ID
         let upperId = "t-UPPER"