Hook version 1.5 (3331) is now available

Hook Version 1.5 (3331) is now available as an in-app update and from Hook’s download page.

Please read the highlights below regarding important changes.


Details below.

User interface changes

1. Link to Copied Address renamed to Hook to Copied Link, and Link to New to Hook to New

In order to help newcomers quickly understand Hook, we have renamed the `Link to Copied Address` menu item to `Hook to Copied Link`. This creates a clearer parallel between `Copy Link` and this command. A typical usage of Hook involves `Copy Link` followed by `Hook to Copied Link`. Hook users have already been speaking in terms of "hooking items together". The meaning of the command hasn't changed, which is to establish a bidirectional link between the current item and the one referenced in the clipboard.

The Link to New menu item has accordingly been renamed to Hook to New. And we have renamed the “LINKS” section of the Hook window to “HOOKED LINKS”.

For even more symmetry, the main keyboard shortcut for Hook to Copied Link is now ⌘V (which also worked before). ⌘L still also works, so the change won’t cause problems for your habits.

2. The gear menu is now in the Title bar

The gear menu, which used to be in the Status bar, is now on the far right side of the Title bar. So you can hide the status bar without making the gear menu inaccessible. The gear icon is displayed when the cursor hovers over it.

3. Reordered menu entries

We have reordered the menu items in the Title and Links menus. We have also introduced separators between them. This will make the commands easier to find.

New! Hook automation

You can now control Hook programmatically thanks to its new AppleScript dictionary. You can get a list of all the bookmarks created by Hook. For any bookmark, you can get all the bookmarks hooked to it. You can also automatically invoke Hook on a particular file bookmark. There are some other functions. And we intend to add more later.

The help page, Automation of Hook, has more information, and links to Alfred workflows we’ve developed for Hook.

A version of the Trickster app (by Apparent Software) that leverages Hook’s automation is coming soon. It will mark Hook-linked files with a special icon, so you can easily see which files have hooks.

Please consider sharing your Hook automation scripts, LaunchBar actions, Alfred Workflows, Keyboard Maestro macros and other automations of Hook in the Share your Hook scripts category of the Hook productivity forum, or wherever else there are interested readers.

Other enhancements

  • Before Hook 1.5, only document-based apps could be the default Hook to New (⌘N) app. Now you can select a database app as the default too (for example, Drafts, OmniFocus, or Things). This is configured on the Notes tab.
  • Also improved wording of Preference window’s Notes tab.
  • The Title and Links menus now contain a share sheet function. This provides a fast and uniform method for sharing information about the current item, or the linked item. In Finder, this shares a link to the current file and the file itself. For other items, it currently only shares the title of the item and a link to the item.
  • If a .hook file contains a link to another .hook file, Hook will not open the link.
  • Added a command to the menu bar window’s Gear menu to show / hide the status bar.
  • Hook links can now track files moved to a different volume.

Hook database format

The format of Hook’s database was never documented nor designed for programmatic use apart from Hook itself. As of Hook 1.5, it is now essentially opaque. As noted above, there is now an automation API for users to access Hook’s data. Users may also continue to use Hook’s export functions to get a copy of all Hook bookmarks and links.

Issues fixed in Hook 1.5

  • Made it even easier to drag the title bar without showing the Title menu.
  • Now, newly added scripts are shown without one needing to restart Hook.
  • Fixed a case where Hook sync would consume too much CPU even after de-activating sync.
  • Optimized the number of files created by the sync process, and its efficiency.
  • Fixed a problem that could cause the default app’s name to appear twice in the Link to New menu (now called the Hook to New menu).
  • Fixed crashes in cases when the clipboard had unexpected content.
  • Fixed an occasional scroll problem in the Preferences window’s Scripts pane.
  • Fixed an issue with “Make Hook File” that prevented it from working if called on a web page containing a / character.
  • Optimized import, export and other functions.

Changes to support for Apple Notes

As discussed last year on the Hook productivity forum and help pages, macOS 10.15 has AppleScript bugs, and there are limitations to how macOS uses Notes’ ID’s. At that point, we added cautions to Hook’s linkable apps page regarding Apple Notes.

Given that Apple still has not fixed the issues with Notes’ AppleScript, we felt it prudent to add a warning dialog box to the Copy Link and Copy Markdown Link commands in the context of Apple Notes. If you want to proceed, just cancel the dialog box. We realize this is an extra step, but it will prevent accidental reliance on Apple Notes. And we expect most users will avoid copying links to Apple Notes.

Pro users who don’t want this warning can edit the script prior to updating the app (customizations take precedence over the built-in script). Or they can edit the Notes script using instructions accessible via the dialog box.

You can, of course, continue to paste links garnered by Hook (Copy Link) into your Apple notes. That means you can continue to link from your Apple notes. You can also use Hook’s search links to link to Apple notes.

More information and work-arounds are discussed in Apple Notes App and Hook.

Additional and updated integrations

In Hook 1.5 we have

The Hook integration server automatically provides updates to Hook clients. They are also bundled into new versions of the app.

For more information

For more information please visit the Hook productivity forum, and upcoming Hook productivity blog posts.


Thanks to everyone for using Hook and contributing to it!

The Hook disk image is packaged using DropDMG by C-Command Software software: The easy way to create and convert Mac disk images (.dmg files).

And thank you all for using Hook and spreading the word about it and its new automation.

Bad move. If a user wrecks their database, then too bad for them. But locking user data away completely only leads to suspicion that CogSci is up to something with our data that we cannot monitor. May be as innocent as can be, but why hide?

(Perhaps this blocking action is also in response to another user’s explorations and questions?)

In fact, it turns out that I now (having run the upgrade to 1.5, found that it had had lost my license, and reactivated),

apparently have no data left at all …

  • None showing up in the GUI,
  • and export which I have now found (perhaps it was hidden by the unexpected reversion to Lite ?) exports no data …
  • the sqlite has now been encrypted, as if it were the property of the developer rather than mine, so I don’t know if there’s anything in there …

Export works and offers me a file containing simply:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">

after the (apparently rather over-optimistic) announcement:

I presume that you didn’t deliberately decide that while any new data would be private (to you, inaccessible to us), any existing data would have to be discarded ?

While I await the return of my data (fortunately there were only 50-100 two-way links at the time of upgrade, I think – I hadn’t invested heavily in the suggested pattern of using Hook), there is an interesting article in The Guardian of Wed 25 March 2020 co-authored by Nassim Nicholas Taleb (at NYU, author of The Black Swan) and Yaneer Bar-Yam (at the New England Complex Systems Institute).

Their definition of scientism is helpful – things that aspire to “the cosmetic attributes of science” but lack its rigour.

Putting down the Taleb article, and opening Script Editor to test the new API, I notice that, like export, it sees no trace of my data at all:

Never mind – history has more in store for us than that, I suspect : - )

we regret this outcome. The 1.4 build remains available here: https://install.appcenter.ms/orgs/CogSci-Apps/apps/Hook . One needs to scroll down to see prior releases.

The 1.4 database is still present in the folder with the original name. Therefore reverting to Hook 1.4 should be possible. Users may wish to do a backup of their library folder.

see also How to Backup and Restore Hook Data – Hook.

As noted in other topic, we are suspending downloads of Hook 1.5 until we sort these issues out.

If anyone else cannot access their data or experiences license issues, would you please let us know here or via PIM or support@cogsciapps.com ?

As I said, the data are not lost. They are in the the [com.cogsciapps.hook](hook://file/LBUnTs2tn?p=TGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0&n=com.cogsciapps.hook) folder ( ~/Library/Application\ Support/com.cogsciapps.hook/). Hook 1.4 will latch onto the hook.sqlite database in there.

The database is also helpful to resolve links when you move files around in some circumstances where the information encoded in the link itself is not sufficient to resolve them. Hook extends the functionality of aliases in that respect. So we do recommend you work from the Hook 1.4 database until Hook 1.5.1.

(We now call the two way links “hooks”).

(hook://file/LBUnTs2tn?p=TGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0&n=com.cogsciapps.hook) folder ( ~/Library/Application\ Support/com.cogsciapps.hook/).

That looks like a link particular to your system rather that one which will work for other users.

The only sqlite db visible in

~/Library/Application\ Support/com.cogsciapps.hook/

on this system is the enccrypted one:

Screenshot 2020-04-02 at 19.25.23

Is hook_en.sqlite roughly the same size as it was before? Here we need either to provide a separate DB recovery tool or build it into 1.5.1. terribly sorry for this inconvenience.

Your osascript API finds nothing at all in the encrypted db, its as if the original folder had simply been completely overwritten by the upgrade – somehow not found or recognised.

I’ll see what I can get from Time Machine, maybe at the weekend. It’s not a huge loss – nothing to lose sleep over.

(My impression here FWIW, is of a perennial problem in bringing new things to market – if we estimate the value and novelty of our own innovation more highly than the market is likely to, then we are bound to be at risk of under-estimating the whole project’s dependence on execution)

(Things don’t build – or sell – themselves)

1 Like

That is bizarre. We had pre-release code to delete the old DB; but we removed it from the official release so that users could have access to their old DB.

Thanks for all the feedback, Rob. We’ll pull out the encryption and fix the issues.

I think it might be worth scrutinizing exactly what happens if there is a late/subsequent reactivation, and exactly how the license gets lost.

The old database file may have been there before I discovered that the license had been lost. It was only after receiving the new activation and clicking that that I realised that that the data was nowhere to be seen.

Thanks, Rob. We’ve run yet further tests here and confirmed that the database is not deleted (at least in our tests), and that the upgrade to 1.5 format works. Our dev team will verify if there’s an interaction going on with license activation failure (that would explain why we haven’t received other mentions of database issues; but we have had one other mention of license issue. It may be that there was a network failure during license activation).

Thanks for your patience with this.

It’s quite coincidental that you should point to that article , because I’ve been resisting for several days publishing an article on https://CogZest.com about Covid policies and beliefs being based on so called “evidence-based” models (and discussing same with an AI researcher/author colleague). I agree there are reasons to criticize evidence based policies. ( However, models are required. Researchers put out a lot of models. Policy makers need to carefully loook at the assumptions, and not naively latch onto a single model. Beyond stats we need good mechanistic models; and vice versa. ) My article was going to (and would if I take the time to write it), draw a contrast between Humean and Kantian approaches to knowledge. Both are required, but Kant tends to get ignored. If you look at https://CogZest.com you will see several references to Kant and Popper. Goes back to my undergraduate days when I wrote papers on causal reasoning (which was to me my phd topic at Sussex, Sloman my supervisor is an expert on that, but I latched onto his Cognition and Affect project instead). The key concepts are mechanism and reasoning, with an emphasis on mechanistic reasoning. You’ll see criticisms on CogZest of “cottage industries” in science, e.g., in contrast to Claude Lamontagne’s amazing AI mechanistic models of vision. (To give an example re covid, there are strong mechanistic reasoning why wearing masks would help prevent transmission. But also some more direct empirical evidence).

So we are actually on the same page. My Cognitive Productivity books and approach are more Kantian than Humean. Perhaps behind your many criticisms of the CogSci Apps brand is a belief that I am Humean/ inductivist. I’m relatively more Kantian and Popperian.

If you look at chapters 7, 13 and 14 of Cognitive Productivity, you will see strong arguments in favor of productive practice apps. This is another type of app that does not currently exist (though flashcard apps can be shoe-horned into productive practice workflows). We actually started devising such an app. So we have three app concepts that come out of an integrative design-oriented research programme. This is not to say that there is some kind of a direct line of inference between science and apps. I’ve pointed in previous posts to Donald Schön’s concept of reflective practice, which is also discussed in the first Cognitive Productivity book. He has a very strong argument that aligns with what might be your view and definitely is mine that between science and engineering a fair amount of “filling in the gaps” happens.

Another point is that the distinction between science and engineering are not that clear cut. Nor is the distinction between math and science. Chapter 2 of The Computer Revolution in Philosophy (by my phd thesis supervisor) is a great read on that subject.

As I mentioned before cognitive science does not tell the developer where to put the pixels or widgets. But it does provide a large body of knowledge with which to think about problems and their solutions. I think there is something to be said for the fact that out of an integrative design-oriented R&D programme, three highly original apps arose ( mySleepButton, Hook, and an unfinished productive practice app). One day if I can I would like to write about that. I’m happy that there is at least one person (yourself) who seems to be interested enough in the approach to challenge it.

But again, I don’t think there’s much of a point in me writing pages and pages about this on the CogSci Apps or Hook websites at this point.

1 Like

So far two reports of license issues with 1.5; and one report of a database opening issue. I’ve had reports of successful upgrades. We’re still investigating the DB / license issue.

There’s a bug in “has hooked bookmarks for” which we’ve now fixed internally.

Kantian and Popperian

Not sure that easier creation and finding of links is likely to be much helped by a theory of knowledge :wink:

That seems like a distraction, at best.

Focus on better design and execution is what it takes.

You mentioned that the Hook 1.4 database, hook.sqlite, is not in ~/Library/Application\ Support/com.cogsciapps.hook/. That would explain why your 1.5 Hook instance has no data. The reason is that Hook 1.5 imports the Hook 1.4 database into hook_en.sqlite. So if the source is empty of course the target will be empty.

Now the question is why would the hook.sqlite (1.4) DB be empty ? Hook has no code that would delete that database. Only a user action can do that. Is it possible you have some script, add on or other process that might have deleted it that file or manipulated the ~/Library/Application\ Support/com.cogsciapps.hook/ in some way?

Could you check whether the aliases folder in that folder has files? It should have plenty of files in it. Otherwise, my only explanation is that there is a process or user action that deleted it (not Hook).

We’ve asked other users and they have reported no issues with the Hook library files (the 1.4 or new 1.5 one).

I don’t yet know why you would have been prompted for a library file. Someone else reported a license issue, but not lost data.