Code Monkey home page Code Monkey logo

taskwarrior-reminders's Introduction

🔔 taskwarrior-reminders

Bi-directional replication of Taskwarrior tasks across iOS/macOS devices, by way of iCloud Reminders.

IMPORTANT - This is still experimental and buggy, please back up your data before playing around with it!

demo

How it Works

A process runs in the background on your Mac and responds to changes made in Reminders or Taskwarrior. When a change is detected it is persisted back to the other system. If taskd is configured, tasks are automatically sync'd before and after any changes to Reminders are detected.

Below is a breakdown of how Taskwarrior concepts map to the Reminders data model, along with the current status of bi-directional replication support.

Taskwarrior Reminders Status
Description Title
Project List
Priority Priority
Status Completed
Due Notification
Annotations Notes
Deletion Deletion
Urgency Sort Order ⚠️
+next Flagged ⚠️
Dependencies Subtasks ⚠️
Tags ???
Wait ???
Scheduled ???
UDA ???

Legend:

  • ✅ Supported
  • ⚠️ Unsupported (no public API from Apple yet)
  • ❌ Not planned

Installation

You will need the latest XCode and Command Line Tools (for Xcode 11.3) from Apple in order to build and install.

Once you have those, run:

$ make install

If everything went well you should automatically be prompted for permission to access Reminders.

If you see an error like dyld: Library not loaded, go back and install the CLI tools.

NOTE - This won't automatically sync your whole Taskwarrior database to Reminders, only the new items you create after installing. If you're feeling adventurous, run task-reminders-sync --all once to mirror all your tasks and reminders across both systems.

taskd and Multiple Macs

You shouldn't install this on more than one Mac unless you have taskd configured – otherwise tasks will become duplicated.

To prevent task duplication, sync is automatically called when any changes to Reminders are detected. This means your local Taskwarrior snapshot should stay up to date with your other online Macs, and you can safely remove any cron jobs or hooks that previously called task sync for you.

Notes on Taskwarrior Hooks

The tool doesn't take an opinion on projects versus tags... but included is an optional hook I find very useful. For Reminders created in the "Life" list it will automatically add a +life tag; and for tasks created under the "life" context it will automatically add them to the "Life" list in reminders. Install with something like:

    ln -s $PWD/on-add.context ~/.task/hooks/on-add.context

(Let me know if you feel strongly the agent should handle this for you automatically.)

If you notice reminders are not propagating back to Taskwarrior, it may be because you have failing hooks. The agent doesn't run in your shell – so if a hook executes task instead of /usr/bin/local/task, this will fail when being run by the agent. Fix this by ensuring your hooks don't require user login.

TODO & Known Issues

[ ] Deleting a Reminder list with outstanding items in it will cause all of the items to be deleted (expected), but the list will be re-created empty. Simply delete it again to completely remove it. [ ] Apple's Reminders API is not efficient about querying recently modified reminders, so CPU usage will sometime spike.

taskwarrior-reminders's People

Contributors

blampe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

taskwarrior-reminders's Issues

how do I uninstall this?

Hello, is there any simple way to undo the sync with Reminders app? I want to uninstall this for now.

Hard-coded /usr/local/bin/task incompatible with M1 Apple Silicon homebrew-installed taskwarrior

It appears that taskwarrior-reminders uses a hard-coded path for the location of the task binary that is (for the moment) incompatible with the default installation directory for Homebrew-installed taskwarrior on M1 Apple Silicon machines.

The existing code is hard-coded to /usr/local/bin/task. Since Homebrew/brew#9117, the suggested default installation directory for Homebrew is /opt/homebrew, which places task in /opt/homebrew/bin/task, rather than where this tool expects it.

This manifests in the launchd process crash-looping:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'launch path not accessible'
*** First throw call stack:
(
	0   CoreFoundation                      0x0000000186e3e320 __exceptionPreprocess + 240
	1   libobjc.A.dylib                     0x0000000186b6cc04 objc_exception_throw + 60
	2   Foundation                          0x0000000187bcdd3c -[NSConcreteTask launchWithDictionary:error:] + 4548
	3   task-reminders-sync                 0x0000000100888650 $s12Repositories21TaskwarriorRepositoryC04execB033_34B1B378C6FD518C2F80C60344E1C084LL4args5input10Foundation4DataVSgSaySSG_6Models4TaskCSgtFTf4nnd_n + 1348
	4   task-reminders-sync                 0x0000000100882684 $s12Repositories21TaskwarriorRepositoryC13syncWithTaskdyyF + 56
	5   task-reminders-sync                 0x00000001008a30e4 $s4Sync19TaskwarriorObserverC_9syncSince4lockAC12Repositories19RemindersRepositoryC_10Foundation4DateVSo21OS_dispatch_semaphoreCtcfcTf4gngn_n + 128
	6   task-reminders-sync             <…>

Symbolic linking task into /usr/local/bin/task solves the immediate problem:

# ln -s /opt/homebrew/bin/task /usr/local/bin/task

It seems like this is a change that Homebrew is going to stick with, as they're preferring not to mix native arm64 executables with x86-64 executables, in the same directory, so there may need to be some degree of variation of this path to support M1 Silicon Macs.

Crashes with NSInternalInconsistencyException ?

Hi there,

I am working with a slightly modified taskwarrior-reminders version corresponding to this commit / PR: #11

This is all on an Arm64 M1 MBP running macOS Ventura 13.3 . Taskwarrior was installed via Macports and was at v2.6.2_0

taskwarrior-reminders was compiled with make install and then unhooked from launchd using make uninstall . Then I ran it directly from the command line:

./task-reminders-sync --all 
  [Taskwarrior] sync
[task-reminders-sync] We're off to the races!
  [Taskwarrior] modified.after:19700101T000000Z export

Past this stdout, it didn't do anything until I added a task to my Apple Reminders tasks. Then it produced a lot of output, syncing about ~60 items successfully, and then crashed with this error:

[Reminders ▶ Taskwarrior] Throw out Trash
  [Taskwarrior] sync
  [Taskwarrior] reminderID:CF2D6A7C-D174-5C35-9564-45A2D2B9BAC0 export
2023-04-04 12:17:14.143 task-reminders-sync[67654:1031576] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Failed to set posix_spawn_file_actions for fd -1 at index 2 with errno 9'
*** First throw call stack:
(
	0   CoreFoundation                      0x000000018c58b19c __exceptionPreprocess + 176
	1   libobjc.A.dylib                     0x000000018c0aa4d4 objc_exception_throw + 60
	2   Foundation                          0x000000018d4f6324 -[NSConcreteTask launchWithDictionary:error:] + 4180
	3   task-reminders-sync                 0x00000001008cf040 $s12Repositories21TaskwarriorRepositoryC04execB033_34B1B378C6FD518C2F80C60344E1C084LL4args5input10Foundation4DataVSgSaySSG_6Models4TaskCSgtFTf4nnd_n + 1672
	4   task-reminders-sync                 0x00000001008c8700 $s12Repositories21TaskwarriorRepositoryC08upsertToB0y6Models10SyncResultVAE4TaskCF + 244
	5   task-reminders-sync                 0x00000001008e7e90 $s4Sync17RemindersObserverC12storeChanged12notificationy10Foundation12NotificationV_tFySo10EKReminderCXEfU_yyScMYccfU_ + 364
	6   task-reminders-sync                 0x00000001008e7ed4 $sIeg_IeyB_TR + 28
	7   libdispatch.dylib                   0x000000018c282874 _dispatch_call_block_and_release + 32
	8   libdispatch.dylib                   0x000000018c284400 _dispatch_client_callout + 20
	9   libdispatch.dylib                   0x000000018c292bf8 _dispatch_main_queue_drain + 928
	10  libdispatch.dylib                   0x000000018c292848 _dispatch_main_queue_callback_4CF + 44
	11  CoreFoundation                      0x000000018c553c88 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 16
	12  CoreFoundation                      0x000000018c5114a8 __CFRunLoopRun + 1992
	13  CoreFoundation                      0x000000018c51058c CFRunLoopRunSpecific + 612
	14  Foundation                          0x000000018d4890bc -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 212
	15  Foundation                          0x000000018d501dbc -[NSRunLoop(NSRunLoop) run] + 64
	16  task-reminders-sync                 0x00000001008e5f28 main + 120
	17  dyld                                0x000000018c0dbf28 start + 2236
)
libc++abi: terminating due to uncaught exception of type NSException
zsh: abort      ./task-reminders-sync --all

Any ideas? My first time working with Swift. abi in the error plus the presumption might mean that amd64 vs arm64 complications might be at play?

Taskwarrior to Reminder sync - not working

Just set up taskwarrior-reminders today on a machine with taskd. While I am seeing data from Reminders to TW, I'm not seeing anything from TW to Reminders. Is a hook or path change needed here?

Tasks added twice when it's a new project

When adding a new task from task warrior into a project that did not previously exist in the Reminders app, the task appears twice on both task warrior and Reminder.

Duplicate issues created in taskwarrior

I use bugwarrior to pull issues from remote repositories in to my local taskwarrior data; using this tool then creates multiple duplicates of those bugwarrior issues within taskwarrior (I assume it writes the issue to reminders and then pulls it back in somehow and gets confused). I've attached a screenshot from taskwarrior showing more information:

image

and this screenshot from the taskwarrior-reminders-sync output:

image

Error during export

during the full export process:

10.15.4 (19E287)

[Taskwarrior ▶ Reminders] e881a648-d4fd-44b9-93f1-5968da1f4cc2
        title[ ▶ figure out add way to repair/heal my left ankle that hurts on long walks and after jumping]
        project[Reminders ▶ self.fitness]
  [Taskwarrior] sync
  [Taskwarrior] reminderID:933474A1-3367-406D-98B0-D87F659AC67C export
2020-06-04 17:32:26.774 task-reminders-sync[9735:9283012] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Failed to set posix_spawn_file_actions for fd -1 at index 0 with errno 9'
*** First throw call stack:
(
        0   CoreFoundation                      0x00007fff37d958d7 __exceptionPreprocess + 250
        1   libobjc.A.dylib                     0x00007fff70b73a9e objc_exception_throw + 48
        2   Foundation                          0x00007fff3a4740c4 -[NSConcreteTask launchWithDictionary:error:] + 5316
        3   task-reminders-sync                 0x0000000105c787bc $s12Repositories21TaskwarriorRepositoryC04execB033_34B1B378C6FD518C2F80C60344E1C084LL4args5input10Foundation4DataVSgSaySSG_6Models4TaskCSgtFTf4nnd_n + 1756
        4   task-reminders-sync                 0x0000000105c732d5 $s12Repositories21TaskwarriorRepositoryC05fetchB4Task6filter6Models0E0CSgSS_tF + 197
        5   task-reminders-sync                 0x0000000105c735f3 $s12Repositories21TaskwarriorRepositoryC08upsertToB0yy6Models4TaskCF + 131
        6   task-reminders-sync                 0x0000000105c7f71d $s4Sync19TaskwarriorObserverC18taskwarriorChanged5eventy13EonilFSEvents0gH5EventV_tF + 893
        7   task-reminders-sync                 0x0000000105c7fd71 $sTA + 17
        8   task-reminders-sync                 0x0000000105c65aa7 $s13EonilFSEvents0A13FSEventStreamC12pathsToWatch9sinceWhen7latency5flags7handlerACSaySSG_AA0aB7EventIDVSdAA0aB11CreateFlagsVyAA0abM0VctKcfcys13OpaquePointerV_SvSgSiSvSPys6UInt32VGSPys6UInt64VGtcfU_Tf4dnnnnn_n + 311
        9   FSEvents                            0x00007fff39459a85 implementation_callback_rpc + 3083
        10  FSEvents                            0x00007fff39458dfe _Xcallback_rpc + 233
        11  FSEvents                            0x00007fff39458cf7 FSEventsD2F_server + 55
        12  FSEvents                            0x00007fff39458c61 __create_d2f_port_source_block_invoke + 232
        13  libdispatch.dylib                   0x00007fff71cb9658 _dispatch_client_callout + 8
        14  libdispatch.dylib                   0x00007fff71cbb818 _dispatch_continuation_pop + 414
        15  libdispatch.dylib                   0x00007fff71ccb4be _dispatch_source_invoke + 2084
        16  libdispatch.dylib                   0x00007fff71cc4b6d _dispatch_main_queue_callback_4CF + 618
        17  CoreFoundation                      0x00007fff37d58cc3 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
        18  CoreFoundation                      0x00007fff37d1897a __CFRunLoopRun + 2042
        19  CoreFoundation                      0x00007fff37d17b23 CFRunLoopRunSpecific + 466
        20  Foundation                          0x00007fff3a3ce2a8 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 212
        21  Foundation                          0x00007fff3a480d2f -[NSRunLoop(NSRunLoop) run] + 76
        22  task-reminders-sync                 0x0000000105c7b95f main + 127
        23  libdyld.dylib                       0x00007fff71d12cc9 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
fish: 'task-reminders-sync --all' terminated by signal SIGABRT (Abort)

Not working with Monterey

Tried to install this with macOS Monterey and it doesn't seem to work

I get the following:

swift package clean
rm -rf .build
swift build -Xlinker -sectcreate -Xlinker __TEXT -Xlinker __info_plist -Xlinker Info.plist --configuration release
Fetching https://github.com/eonil/FSEvents from cache
Fetching https://github.com/SwiftyJSON/SwiftyJSON from cache
Fetched https://github.com/eonil/FSEvents (2.60s)
Fetched https://github.com/SwiftyJSON/SwiftyJSON (2.60s)
Computing version for https://github.com/SwiftyJSON/SwiftyJSON
Computed https://github.com/SwiftyJSON/SwiftyJSON at 5.0.0 (0.52s)
Computing version for https://github.com/eonil/FSEvents
Computed https://github.com/eonil/FSEvents at 0.1.6 (0.51s)
Creating working copy for https://github.com/eonil/FSEvents
Working copy of https://github.com/eonil/FSEvents resolved at 0.1.6
Creating working copy for https://github.com/SwiftyJSON/SwiftyJSON
Working copy of https://github.com/SwiftyJSON/SwiftyJSON resolved at 5.0.0
remark: Incremental compilation has been disabled: it is not compatible with whoremark: Incremental compilation has been disabled: it is not compatible with whoremark: Incremental compilation has been disabled: it is not compatible with whoremark: Incremental compilation has been disabled: it is not compatible with who/Users/ryec/taskwarrior-reminders/Sources/Repositories/Taskwarrior.swift:29:9: warning: result of call to 'execTaskwarrior(args:input:)' is unused
execTaskwarrior(args: ["sync"])
^ ~~~~~~~~~~~~~~~~
/Users/ryec/taskwarrior-reminders/Sources/Repositories/Taskwarrior.swift:47:9: warning: result of call to 'execTaskwarrior(args:input:)' is unused
execTaskwarrior(args: ["reminderID:" + t.reminderID!, "-COMPLETED", "delete"])
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/ryec/taskwarrior-reminders/Sources/Repositories/Taskwarrior.swift:88:9: warning: result of call to 'execTaskwarrior(args:input:)' is unused
execTaskwarrior(args: args, input: task)
^ ~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/ryec/taskwarrior-reminders/Sources/Repositories/Taskwarrior.swift:117:17: warning: initialization of immutable value 'jsonEncoder' was never used; consider replacing with assignment to '' or removing it
let jsonEncoder = JSONEncoder.init()
~~~~^~~~~~~~~~~
_
/Users/ryec/taskwarrior-reminders/Sources/Repositories/Taskwarrior.swift:137:9: warning: no calls to throwing functions occur within 'try' expression
try process.launch()
^
remark: Incremental compilation has been disabled: it is not compatible with whoremark: Incremental compilation has been disabled: it is not compatible with who/Users/ryec/taskwarrior-reminders/Sources/Sync/main.swift:16:9: warning: initialization of immutable value 'fsobserver' was never used; consider replacing with assignment to '
' or removing it
let fsobserver = TaskwarriorObserver(reminders, syncSince: syncStart, lock: lock)
~~~~^~~~~~~~~~
_
/Users/ryec/taskwarrior-reminders/Sources/Sync/RemindersObserver.swift:43:25: warning: initialization of immutable value 'syncResult' was never used; consider replacing with assignment to '_' or removing it
let syncResult = self.tw.upsertToTaskwarrior(
~~~~^~~~~~~~~~
_
/Users/ryec/taskwarrior-reminders/Sources/Sync/TaskwarriorObserver.swift:33:25: warning: result of call to 'upsertToTaskwarrior' is unused
self.tw.upsertToTaskwarrior(syncResult.task)
^ ~~~~~~~~~~~~~~~~~
[8/8] Build complete!
rm -f /usr/local/bin/task-reminders-sync
launchctl remove com.blampe.task-reminders-sync || true
rm ~/Library/LaunchAgents/com.blampe.task-reminders-sync.plist || true
cp .build/release/task-reminders-sync task-reminders-sync
ln -Fs /task-reminders-sync /usr/local/bin/task-reminders-sync
cp com.blampe.task-reminders-sync.plist ~/Library/LaunchAgents/.
launchctl load -w ~/Library/LaunchAgents/com.blampe.task-reminders-sync.plist
Warning: Expecting a LaunchDaemons path since the command was ran as root. Got LaunchAgents instead.
launchctl bootstrap is a recommended alternative.

Creating a task having a project name similar to an iCloud shared project crashes the app

I have a Family list in reminders which is shared with my partner through iCloud.

Once I tried to add a task task add Test project:Family in task warrior, task warrior-reminders kept crashing, relaunching or ignoring the crash doesn't stop the app from crashing again every 10 seconds.

make uninstall followed by make install did not solve the problem

Deleting the task added to Family project did not save the problem either.

compilation error using xcode-12.4

When compiling taskwarrior-reminders I get the following error using xcode 12.4(12D4e):

make install
swift package clean
rm -rf .build
swift build -Xlinker -sectcreate -Xlinker __TEXT -Xlinker __info_plist -Xlinker Info.plist --configuration release
Fetching https://github.com/eonil/FSEvents
Fetching https://github.com/SwiftyJSON/SwiftyJSON
Cloning https://github.com/eonil/FSEvents
Resolving https://github.com/eonil/FSEvents at 0.1.6
Cloning https://github.com/SwiftyJSON/SwiftyJSON
Resolving https://github.com/SwiftyJSON/SwiftyJSON at 5.0.0
/Users/erik/Projects/taskwarrior-reminders/Sources/Repositories/Taskwarrior.swift:29:9: warning: result of call to 'execTaskwarrior(args:input:)' is unused
        execTaskwarrior(args: ["sync"])
        ^              ~~~~~~~~~~~~~~~~
/Users/erik/Projects/taskwarrior-reminders/Sources/Repositories/Taskwarrior.swift:47:9: warning: result of call to 'execTaskwarrior(args:input:)' is unused
        execTaskwarrior(args: ["reminderID:" + t.reminderID!, "-COMPLETED", "delete"])
        ^              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/erik/Projects/taskwarrior-reminders/Sources/Repositories/Taskwarrior.swift:88:9: warning: result of call to 'execTaskwarrior(args:input:)' is unused
        execTaskwarrior(args: args, input: task)
        ^              ~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/erik/Projects/taskwarrior-reminders/Sources/Repositories/Taskwarrior.swift:112:17: warning: initialization of immutable value 'jsonEncoder' was never used; consider replacing with assignment to '_' or removing it
            let jsonEncoder = JSONEncoder.init()
            ~~~~^~~~~~~~~~~
            _
/Users/erik/Projects/taskwarrior-reminders/Sources/Repositories/Taskwarrior.swift:132:9: warning: no calls to throwing functions occur within 'try' expression
        try process.launch()
        ^
/Users/erik/Projects/taskwarrior-reminders/Sources/Sync/main.swift:16:9: warning: initialization of immutable value 'fsobserver' was never used; consider replacing with assignment to '_' or removing it
    let fsobserver = TaskwarriorObserver(reminders, syncSince: syncStart, lock: lock)
    ~~~~^~~~~~~~~~
    _
/Users/erik/Projects/taskwarrior-reminders/Sources/Sync/RemindersObserver.swift:43:25: warning: initialization of immutable value 'syncResult' was never used; consider replacing with assignment to '_' or removing it
                    let syncResult = self.tw.upsertToTaskwarrior(
                    ~~~~^~~~~~~~~~
                    _
/Users/erik/Projects/taskwarrior-reminders/Sources/Sync/TaskwarriorObserver.swift:33:25: warning: result of call to 'upsertToTaskwarrior' is unused
                self.tw.upsertToTaskwarrior(syncResult.task)
                        ^                  ~~~~~~~~~~~~~~~~~
[8/8] Linking task-reminders-sync
rm -f /usr/local/bin/task-reminders-sync
launchctl remove com.blampe.task-reminders-sync || true
cp .build/release/task-reminders-sync task-reminders-sync
ln -Fs /Users/erik/Projects/taskwarrior-reminders/task-reminders-sync /usr/local/bin/task-reminders-sync
cp com.blampe.task-reminders-sync.plist ~/Library/LaunchAgents/.
cp: /Users/erik/Library/LaunchAgents/.: No such file or directory
make: *** [install] Error 1

Crash during normal run

I had a crash happen - it looked like there were about 60 iterations of the below output before the crash.

[Reminders ▶ Taskwarrior] Figure out why puppet-master service won't start
  [Taskwarrior] sync
  [Taskwarrior] reminderID:482D7EAA-6901-4BAB-8117-945700669B76 export
Crash Report
2020-07-05 18:48:46.309 task-reminders-sync[1285:11023] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Failed to set posix_spawn_file_actions for fd -1 at index 0 with errno 9'
*** First throw call stack:
(
	0   CoreFoundation                      0x00007fff2fd55be7 __exceptionPreprocess + 250
	1   libobjc.A.dylib                     0x00007fff68b2d5bf objc_exception_throw + 48
	2   Foundation                          0x00007fff32416034 -[NSConcreteTask launchWithDictionary:error:] + 5300
	3   task-reminders-sync                 0x0000000108fae79c $s12Repositories21TaskwarriorRepositoryC04execB033_34B1B378C6FD518C2F80C60344E1C084LL4args5input10Foundation4DataVSgSaySSG_6Models4TaskCSgtFTf4nnd_n + 1756
	4   task-reminders-sync                 0x0000000108fa9242 $s12Repositories21TaskwarriorRepositoryC05fetchB4Task6filter6Models0E0CSgSS_tF + 82
	5   task-reminders-sync                 0x0000000108fa95d3 $s12Repositories21TaskwarriorRepositoryC08upsertToB0yy6Models4TaskCF + 131
	6   task-reminders-sync                 0x0000000108fb3851 $s4Sync17RemindersObserverC12storeChanged12notificationy10Foundation12NotificationV_tFySo10EKReminderCXEfU_yycfU_ + 385
	7   task-reminders-sync                 0x0000000108fb3889 $sIeg_IeyB_TR + 25
	8   libdispatch.dylib                   0x00007fff69c7a6c4 _dispatch_call_block_and_release + 12
	9   libdispatch.dylib                   0x00007fff69c7b658 _dispatch_client_callout + 8
	10  libdispatch.dylib                   0x00007fff69c86cab _dispatch_main_queue_callback_4CF + 936
	11  CoreFoundation                      0x00007fff2fd18f11 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
	12  CoreFoundation                      0x00007fff2fcd8d17 __CFRunLoopRun + 2028
	13  CoreFoundation                      0x00007fff2fcd7ece CFRunLoopRunSpecific + 462
	14  Foundation                          0x00007fff323701c8 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 212
	15  Foundation                          0x00007fff32422c6f -[NSRunLoop(NSRunLoop) run] + 76
	16  task-reminders-sync                 0x0000000108fb194f main + 127
	17  libdyld.dylib                       0x00007fff69cd4cc9 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
[1]    1285 abort      ./task-reminders-sync

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.