Home | Parent | ← Go → | Prior | Next

# 4.3 Import, Export & Syncing

Topics on this Page

- What is Import and Export?
- Import/Export from all vs. to only
- What is Syncing?
- Mapping and Remapping
- May Ignore Some Moves from Import Clients
- Delete Unmatched Items
- Safe Sync Limit
- Sync Snapshots
- Merge by URL
- Mapping Between Folders and Tags
- Share New Items
- No Export if No Changes
- Import and Export of Tags
- Exclude Export of Special Bookmarks
- Import and Export of Separator Changes
- Merge Folders
- Content Not Exported
- Clients’ Hidden Proprietary Attributes
- Normalization of URLs
- Undo and Redo
- Reading Your Sync History
- How Our Apps Access Browser (Client) Content

## 4.3.1 What is Import and Export?

The following picture shows what Import and Export do.

In words,

- An Import copies changes from web browser(s) to the bookmarks manager.

- An Export copies changes from the bookmarks manager to the browser(s).

You can command an immediate Import or Export manually from the File menu.

During Import and Export operations, by default, our bookmarks managers make the bookmarks in the destination (where the arrow is pointing to) look like the bookmarks in the source (where the arrow is coming from). In particular, items not in the source are deleted.

You can change this default behavior if you want to, either temporarily or permanently, by using Advanced Client Settings and, for imports, Import Postprocessing.

## 4.3.2 Import/Export from all vs. to only

### Import from all and Export to all

In Synkmark, the all referred to in these menu items are the browsers which you have listed and activated in the Syncing tab of the Preferences window.

In BookMacster, the all referred to in these menu items are the Clients which you have listed and activated in the tab Settings > Clients of the current Bookmarkshelf Document. These Import and Export operations are the same which are typically performed by BookMacster Agents during syncing operations.

### Import from only* and Export to only

These menu items have submenus in which you choose the Client you’d like to import from or export to. The submenus include all Clients available on your Mac, not only the ones you have configured Settings > Clients. For that reason, you will also be asked if you wish to perform a Normal or Overlay operation. A normal import or export wipes everything out in the destination and makes it look like the source. An overlay does a more graceful merge.

## 4.3.3 What is Syncing?

When you activate syncing in Smarky or Synkmark, or switch on simple Agents in BookMacster, your bookmarks are kept in sync automatically. This means that when you add, update or delete bookmarks in one browser, depending on your configuration, bookmarks may be sorted (alphabetized) in that browser and/or copied to other browsers after a few minutes. This is done by importing (as described above), possibly sorting, and then exporting (as described above). In other words, a a Sync operation is composed of an Import from all, followed by an Export to all.

If the Syncing button in your document’s toolbar has a green dot in it like this:

It means that an Agent is actively watching for changes to sync.

If you wanted to do a Sync manually, you should do the same three steps manually.

- Import, by clicking one of the Import commands in the File menu.

- If alphabetizing is desired, Sort.

- Export, by clicking one of the Export commands in the File menu.

## 4.3.4 Mapping and Remapping

In general, bookmarks are mapped into the same location in the destination as they were in the source; Bookmarks Bar to Bar, Menu to Menu, etc. However, because Clients, and the Bookmarkshelves, have different structures, some of the bookmarks content content copied during an Import or Export have nowhere to go. For example, if bookmarks from a Firefox Client, containing items in its Unsorted Bookmarks Hard Folder are migrated to a Camino Client, which does not have such an Unsorted Bookmarks folder, the subject items must be remapped into a different location.

Using Smarky, Synkmark, Markster or BookMacster, such a migration is performed by an Import + Export, with the app “in the middle”. Depending on the structure of the Import Client, Bookmarkshelf, and Export Client, remapping may be necessary during Import, Export or both. You can configure some of the remapping rules with the settings described in the next section.

### Mapping and the Default Parent

During either an Import or Export, the process of “mapping” computes where a content item should be placed in the destination based on its location in the source. As previously discussed, even with the best of intentions and configurations, an item may not be allowed where it would be directly mapped. For example, loose bookmarks are not allowed into the Root of an export destined for Chrome, or Firefox.

If directly mapping an item is not allowed, the app checks to see if it can be remapped to the Default Parent for the destination.

For importing into a Bookmarkshelf, you set a Default Parent in the Import Postprocessing sheet.

For exporting to Clients, you can change the a Default Parent in the Advanced Client Settings for each Client.

If the item is not allowed in the Default Parent either,the app tries the other Hard Folders until it finds one where the item is allowed and remaps it to there. (The order in which Hard Folders are tried is a hidden preference.)

## 4.3.5 May Ignore Some Moves from Import Clients

If you move an item from one folder to another in a Client’s built-in Bookmarks Manager,the app recognizes this move, imports it, and later exports it to other Clients, unless the move could be accounted for as the result of an automatic mapping during a prior export. There are two such cases of these automatic mappings. Both of them rare…

- The Client would not allow the item to be exported to its current location in the Bookmarkshelf document, and the apparent moved-to folder is the default parent of the item.
- The Client in which the move is apparent has a Tag Mapping whose target folder is the apparent moved-to folder, and whose tag is one of the item’s tags.

These exceptions are necessary so that automatic mappings which should only be applied to one Client do not get applied to all Clients when importing from that one Client only.

We recommend that, when it’s time to do housecleaning on your bookmarks (moving, renaming, and deleting items, etc.) please open your Bookmarkshelf document, do the work inthe app, and, when done, Export to all Clients.

## 4.3.6 Delete Unmatched Items

As the result of an Export operation, usually you want the browser or file to which you exported to contain only the items which were exported from Smarky, Synkmark, Markster, or BookMacster. Checking on the Delete Unmatched Items option will do this by deleting any destination items which were not be matched to source items during the merge process described above. You should check this box if you want the content of the Client to look as much as possible like the content of your Bookmarkshelf(). You can control Delete Unmatched Items in the Advanced Client Settings.

Delete Unmatched Items is also available during Import Postprocessing, and is used as part of making your Bookmarkshelf exactly match the content in its Import Clients. Note that there is only one “Delete Unmatched Items” checkbox for a document, not one for each Client in the table. This is because, in this case, there is only one destination (the Bookmarkshelf) from which items can be deleted, and also it cannot be determined whether or not a given item has been matched until after all Import Clients have been imported.

## 4.3.7 Safe Sync Limit

A disadvantage of syncing data sets such as bookmarks is that an inadvertent change in one data set will be automatically copied to all the others. For example, if some errant Firefox extension or miscommunication from the cloud deleted 100 bookmarks in Firefox, and Synkmark or BookMacster were syncing Firefox and Safari, it would dutifully delete those 100 in its own Content and in Safari too. To avoid making a bad situation worse like that, Smarky, Synkmark and BookMacster provide Safe Sync Limit: If, during an Import or Export operation, the number of additions + updates + deletions exceeds the applicable Safe Sync Limit, a warning or Error 3011 or 3012 will be presented. (Note that the number of slides is ignored. This is because, for example, adding a single bookmark at the top of a folder of 100 items will cause 100 items to slide down. This results in a high number but is in fact a normal occurrence.)

Safe Sync Limits are set to 25 by default. We do not recommend increasing the Safe Sync Limit so that you can do bookmarks housecleaning or reorganization in a web browser’s internal bookmarks editor without Error 3011 or 3012 occurring. We recommend that you instead do bookmarks housecleaning or reorganization in Smarky, Synkmark or BookMacster. That way you can maintain Safe Sync Limit protection from the most prevalent cause of inadvertent changes, which is miscommunication from the cloud (iCloud, Sign in to Chrome, or Firefox Sync).

If you want to change a Safe Sync Limit, click in the menu: Bookmarks or Bookmarkshelf > Safe Sync Limit. Then click the type of limit you want to change, Import or Export, and in the latter case choose the Browser or Client whose limit you want to change. Finally, follow the bouncing blue arrows to the appropriate popup menu, and change it.

## 4.3.8 Sync Snapshots

To complement the Versions Browser which allows you to turn the clock back on Content in Smarky, Synkmark, Markster, or BookMacster, you can also turn the clock back on exports to web browsers. This may be necessary, for example, if you neglect to import bookmarks from a web browser and then export to it after you have disabled warnings, or accidentallly click through the warnings without thinking. To rescue you from this situation,the app archives a Sync Snapshot file containing the web browser’s bookmarks before each export.

Sync Snapshots are stored in ~/Library/Application Support/BookMacster. We have a video which shows how to restore from them.

Of course, to limit disk space usage, the app keeps only a limited number of Sync Snapshots, by discarding the oldest when a new one is added. You can set this number in Preferences > Syncing. The default number to keep is 5, but setting it to 0 is not unreasonable if you have plenty of other backups (Time Machine, etc.) and know how to use them. (Warning to power users: Do not mess with Safari’s Bookmarks.plist file while iCloud Safari syncing is on.)

## 4.3.9 Merge by URL

During an Import or Export, the app will compare bookmarks content items between the Bookmarkshelf and the Client, looking for items that were previously imported or exported. It can do this because it remembers the items’ external identifiers. When a match is found, Smarky, Synkmark, Markster, or BookMacster or will merge the items by keeping either the item from the Client, or the item from the Bookmarkshelf().

If no previously-imported or exported item is found for a given bookmark, there is another chance for a match if the Merge by URL box is checked. In this case, a second search is done, for a bookmark with the same URL. (Note that the app normalizes URLs.) If found, the items are similarly merged, keeping the item from either the Client or Bookmarkshelf, as indicated by your setting of the Keep matched item from control in the Advanced Client Settings. If more than one such bookmark is found, the source and candidate destination bookmarks’ parents are compared, and if that still does not result in a unique match, the bookmarks’ names are compared, and if that still does not result in a unique match, one is chosen arbitrarily.

For Exporting to a Client which does not accept duplicate items, Merge By URL is forced on and the control is disabled.

## 4.3.10 Mapping Between Folders and Tags

When performing an Import or Export operation, Smarky, Synkmark, Markster, or BookMacster provides features that allow you to translate between Clients that support folders instead of tags, and Clients that support tags instead of folders.

For a one-time conversion of all of your bookmarks, consider Fabricate Folders or Fabricate Tags, which will map all of the bookmarks in the document. For browsers that support hierarchy but not tags, during an Import you may Fabricate Tags, and during an Export you may Fabricate Folders. For browsers that support tags but not hierarchy, it’s just the opposite – during an Import you may Fabricate Folders, and during an Export you may Fabricate Tags.

For a permanent configuration which will map certain special folders to certain special tags or vice versa, use Tag ↔ Folder Mappings

### Fabricate Tags

If the Fabricate Tags box is checked on, the names of a bookmark’s parent, grandparent, etc. folders which are not presently among the bookmark’s tags will be added to bookmark’s tags. Only names of soft folders are added, of course. Names of hard folders such as Bookmarks Bar or Bookmarks Menu are not informational and therefore are not added as tags. This is useful if your goal is to use tags instead of folders.

### Fabricate Folders

Fabricate Folders s useful if your goal is to use folders instead of tags. If checked ON, any item which has a tag will be placed into a subfolder which has the same name as its first tag, creating the folder if necessary. If in addition the One for each tag setting is checked ON, for items with more than one tag, the same will be done for each additional tag, placing copies of the bookmark into subfolders for each tag, creating additional subfolders if necessary. Note that this can fabricate many duplicate bookmarks.

The number of folders created, however is reduced by the fact that, during Fabricate Folders, only one folder is created to contain multiple bookmarks which require it.

The Fabricate Folders option will not fabricate a folder that would not be allowed at the required location. Currently, there is in practice only one example of this: If Fabricate Folders is checked on, and bookmark(s) at root have tags, but the structure of the destination (either external store or document) does not allow soft folders at the root level, then folders are not created for the tags of these bookmarks.

### Tag ↔ Folder Mappings

This feature is used if, for example, you collect bookmarks in a web-based browser app such as Delicious or Pinboard, tag them with a tag such as to-read, and want them automatically moved into a certain folder such as your Reading List when you sync this service with Safari, or vice versa.

To configure Tag ↔ Folder Mappings,

- Open a Bookmarkshelf document which has been configured for syncing.
- Click the tab Settings, then Clients.
- Click the gear button for one of the Clients. This will show its Advanced Client Settings sheet.
- At the bottom of the sheet, click the Tag ↔ Folder Mappings button. Another, deeper sheet will appear. (Some Clients, Roccat for example, support neither tags nor folders, and in that case this button is not available.)
- Click the [+] button below one of the two tables, to add the behavior you want in this Client.
- Enter your choices in each of the three columns.
- Click Done twice.
- Repeat for the other Client.

Note that there are four possible types of Tag ↔ Folder Mappings. In the upper table, you configure Folder to Tag Mappings, specifying whether to do this during Import or Export operations. In the lower table you similarly configure Tag to Folder Mappings. For most Clients, only two types are available; only the Import or only the Export item are available in the Do during popup. This is because most Clients which support tags do not support folders, and vice versa. The exception is Firefox, which supports both tags and folders.

#### Example: Creating a Reading List in Chrome

You can string together a Folder to Tag mapping together with a Tag to Folder mapping, in order to map items from a particular folder in, say, Google Chrome, into your Reading List in Safari. Any item which you place in this folder while browsing in Chrome will appear after syncing in Safari’s Reading List. To do this,

- Designate to yourself, or create the folder into which you shall put your Reading List items while you are browsing in Chrome.
- Activate Smarky, Synkmark, Markster, or BookMacster and open your Bookmarkshelf document.
- Navigate to Clients > Chrome > Advanced Settings > Tag ↔ Folder Mappings as detailed above.
- In the upper table, create an Import mapping from your designated folder to a special tag, such as maybe to-read.
- Click Done twice.
- Navigate to Clients > Safari > Advanced Settings > Tag ↔ Folder Mappings.
- In the lower table, create an Export mapping from your designated tag, to-read or whatever, to the Reading/Unsorted folder. (Note that the app exports its Reading/Unsorted folder to the Reading List in Safari and to Unsorted Bookmarks in Firefox.)
- Click Done twice.

One more thing. Because all items will have been moved out of your designated folder when exporting to Safari, Safari will now have that folder, empty, which will cause confustion. To prevent that, you can use an Export Exclusion. To do that, while still in your Bookmarkshelf Document,

- Select that designated folder in the Content View.
- If the Inspector is not showing, click in the menu: Selection > Show Inspector.
- Click the Export Exclusions button at the bottom of the window.
- In the drawer which appears, switch off the checkbox for Safari.

## 4.3.11 Share New Items

Bookmarks stored in Clients which are social bookmarking web apps such as Delicious often have an attribute called Shared, or, conversely, “Private”. Bookmarks which are exported as Shared become viewable by other people who visit your bookmarks page.

BookMacster supports a ‘Shared” attribute to its bookmarks, and this attribute is exported to such a Client. So the question arises: When items are imported from a Client such as Safari which does not support the Shared attribute, should the Shared attribute be turned on or off.

You provide the answer by switching the Share new items checkbox in the Advanced Client Settings.

## 4.3.12 No Export if No Changes

To execute an Export, the app first reads in all of the current bookmarks content from the Export Client and compares it to the bookmarks content from the Bookmarkshelf() which is proposed to be exported. It determines the number of each type of change which needs to be made. If there are no additions, deletions, moves, or slides, and if none of the items have any updates to a nontrivial attribute, the operation is terminated without writing the file or uploading anything.

## 4.3.13 Import and Export of Tags

During an Import, tags are given a special, conservative treatment. When a bookmark existing in the Bookmarkshelf is matched and merged with one from a Client, any new tags on the bookmark in the Client are added to the bookmark in the Bookmarkshelf, and none are deleted.

During an Export, tags are treated like any other attribute. When a bookmark existing in the Client is matched and merged with one from the Bookmarkshelf, the tags on the bookmark in the Client are completely replaced by the tags on the bookmark in the Bookmarkshelf. Any tags on the Client bookmark not on the Bookmarkshelf bookmark are deleted.

Conclusion: If you are using the app to sync browser Clients and want to delete tags, you must delete them in the (in the Content tab of a Bookmarkshelf).

## 4.3.14 Exclude Export of Special Bookmarks

In the Advanced Client Settings for each Client, in the Export section, there are checkboxes in which you can selectively exclude exporting bookmarks to local files, JavaScript bookmarklets, RSS feeds and Firefox Live bookmarks.

## 4.3.15 Import and Export of Separator Changes

When we speak of changes to separators, we mean adding new separators, moving separators, and/or deleting separators. The behaviors described in this section are the same, with the additional requirement that, in order to delete separators, the relevant Delete Unmatched Items checkbox must be switched ON, and this must be a regular export and not an Overlay.

Separators are a structural element which you have usually set to your liking in one Client or another. Therefore, when importing and exporting with multiple Clients, Smarky, Synkmark, Markster, or BookMacster filter changes to separators according to special rules which prevent undesired duplications. The underlying idea is that you want separators from source or destination, but not both. Which one you want is determined by the setting of the relevant Merging Keep option, and there is also an option to not export any separators at all. (This may be desirable if you are exporting to Safari and Safari bookmarks will be subsequently synced to the iPhone via iCloud. Separators may be unwanted in the iPhone due to the small screen size.)

### Warning: Weeds Ahead!

The behavior you get with the default settings is probably “what you want” and should “just work”. The details in this section are way down in the weeds and are published for our testers.

### Importing Separators

To be precise, we need to define three classes of separators, imagining that separators are imported from Clients on the Left, to a Bookmarkshelf on the Right.

Left. A separator in a Client which does not exist in the Bookmarkshelf (either because it was never im/exported or was im/exported and subsequently deleted) is called a Left separator. In BookMacster, Left separators are imported to the Bookmarkshelf if Keep matched item from is set to Client, but not imported if Keep matched item from is set to Bookmarkshelf. In Smarky and Synkmark, Left separators are imported.

Matched. A separator in the Bookmarkshelf which also exists in all Clients (due to prior im/export) is called a matched separator. A matched separator will always remain standing. (Actually, in BookMacster, the one in the Bookmarkshelf is either overwritten by a mate imported from a Client, or is untouched, depending on whether Keep matched item from is set to Client or BkmxDoc. But since separators have no visible attributes, you can’t tell the difference).

Right. A separator in the Bookmarkshelf which is not matched by one in all of the Clients (either because it was never im/exported or was im/exported and subsequently deleted from a Client) is called a Right separator. In BookMacster, If the Keep matched item from option is set to Client, or if Import Postprocessing Delete Unmatched Items checkbox is switched ON, Right separators are deleted. Otherwise, Right separators are untouched. In Smarky and Synkmark, Right separators are deleted.

Table. The above rules are summarized in the following table. The settings in the first row are the default settings, which are what you should have if you have never changed any of the Advanced Settings (by clicking one of the “gear” buttons). The first row also applies to Smarky and Synkmark, which do not have these settings.

Clients > Settings (BookMacster only) | Behavior of Separators during Import
--- | ---
‘Delete Unmatched Items’ in Import Postprocessing (Advanced) Settings | ‘Merging Keep’ in Client’s Advanced Settings : Import | Left Separators | Matched Separators | Right Separators
ON | Client | Imported | Imported (*) | Deleted
OFF | Client | Imported | Imported (*) | Deleted
ON | Bookmarkshelf | Not imported | Untouched | Untouched
OFF | Bookmarkshelf | Not imported | Untouched | Untouched

(*) Since separators do not have any attributes, the effect of “Imported” in this case is the same as that of “Untouched” – the separator appears to survive unchanged.

### Exporting Separators

For exporting, we redefine the three classes of separators, because Bookmarkshelf and Client are now swapped in our imagined “Left to Right” movement.

Left. A separator in the Bookmarkshelf which does not exist in the Client (either because it was never im/exported or was im/exported and subsequently deleted) is called a Left separator. Action may be affected by the setting of the Export Separators checkbox:

A Left separator is exported only if both this box is checked and and the Keep matched item from is set to Bookmarkshelf. Left separators are always exported in Smarky and Synkmark.

Matched. A separator in the Client which also exists in the Bookmarkshelf (due to a prior im/export) is called a matched separator. A matched separator will always remain standing. (Actually, in BookMacster, the one in the Client is either overwritten by its mate exported from the Bookmarkshelf, or is untouched, depending on whether Keep matched item from is set to Bookmarkshelf or Client. But since separators have no visible attributes, you can’t tell the difference).

Right. A separator in the Client which is not matched by one in the Bookmarkshelf (either because it was never im/exported or was im/exported and subsequently deleted) is called a Right separator. In BookMacster, Right separators are deleted if Keep matched item from is set to Bookmarkshelf, but untouched if set to Client. In Smarky and Synkmark, Right separators are always deleted.

Table. The above rules are summarized in the following table. The settings in the first row are the default settings, which are what you should have if you have never changed any of the Advanced Settings (by clicking one of the “gear” buttons). The first row also applies to Smarky and Synkmark, which do not have these settings.

Client’s Advanced Settings : Export (BookMacster only) | Behavior of Separators during Export
--- | ---
Merging Keep Item From | Export Separators | Left Separators | Matched Separators | Right Separators
Bookmarkshelf |  | Exported | Exported (*) | Deleted
Bookmarkshelf |  | Not exported | Untouched | Untouched
Client | ON | Not exported | Untouched | Untouched
Client | OFF | Not exported | Untouched | Untouched

(*) Since separators do not have any attributes, the effect of “Exported” in this case is the same as that of “Untouched” – the separator appears to survive unchanged.

Note that the Separators’ Behavior does not depend on the Export Client’s Delete Unmatched Items setting. (First of all, only the first two of the above four combinations are possible, since if the Export Client’s Delete Unmatched Items is ON (☑), Keep matched item from must be set to BkmxDoc. Of these two cases that remain, the separators which would be affected by the Export Client’s Delete Unmatched Items, the Right separators, are deleted due to the action of the Keep matched item from = BkmxDoc. So, the Export Client’s Delete Unmatched Items does not matter.)

## 4.3.16 Merge Folders

You might create a folder with a certain name, say, News, in, say, the Safari Bookmarks Bar, and then also create a folder with the same name, News in Firefox in the same corresponding location. Then you might import from Safari and Firefox, expecting that the items in your two News folders would be merged into one News folder. Smarky, Synkmark, Markster, and BookMacster do indeed do this.

### What, When and Where

To make this happen, very near the end of an Import or Export operation, the app merges pairs of folders within the same parent, which have the same name, if they come from different sources (either different Clients or Client vs. Bookmarkshelf). Because it does so starting from the root, all such pairs folders will be detected, provided that they have the same lineage. When a pair of folders with the same lineage and name is so discovered, one folder will be kept and the other folder will have its items moved into the first folder and itself be deleted. Also, any external identifiers in the deleted folder not already existing in the kept folder are appended to kept folder.

A more aggressive merging of folders may be performed by executing a Consolidate Folders command.

### Which one is Kept?

If during an Import operation, the two folders are from different Clients, the one from the higher-priority Client (higher in the list in Settings > Clients) is kept.

Otherwise, if both folders are new (not previously in the destination), the one with the earlier Date Added is kept. This is important for the following reason. If you are merging from two or more import clients which have similar but not identical hierarchies, for folders which exist in multiple Clients but not in the Bookmarkshelf, if these clients do not themselves provide an Date Added, Date Added is assigned as the time of their import. Therefore, the folder from the client which is first in the Import Clients table will have an older Date Added, typically by a few seconds, and therefore will be the one that is kept.

If both folders were in the Destination before the Import or Export, then the one which has higher item quality is kept.

If one folder is from the source and the other is from the destination, which one is kept depends on the Merging Keep setting: If Merging Keep is set to Client, the folder from the Client is kept. If set to Bookmarkshelf(), … Bookmarkshelf. (As stated above, if set to Both, the Merge Folders operation is not even performed.)

### Why does it Matter which is Kept?

In most cases, it does not. A folder with the same lineage and the same name is pretty much the same folder. The only differences might be a couple of attributes which are only used by Smarky, Synkmark, Markster, or BookMacster, such as sorted or not, sort at top/bottom, and the Auto-Click attribute which supported by a couple of browser apps.

## 4.3.17 Content Not Exported

Before writing or uploading items, Smarky, Synkmark, Markster, and BookMacster remove items which are not allowed or not desirable in the given the Export Client, or won’t work in any Client. Most of these are fairly obvious, but here are a few examples…

- Bookmarks whose URLs have no characters, or illegal characters in their host portions, for example http:///, are not exported to any Client.
- Bookmarks whose URLs contain a percent-escaped NULL, “%00”, in their path portions will not be exported to any Client because this causes weird behavior in Chrome, Firefox, and possibly other apps.
- Google Bookmarks does not allow items that have the same URL. (Note that, like BookMacstedr Google Bookmarks normalizes URLs.) Prior to uploading, BookMacster will detect such duplicates and omit uploading one of them.
- Delicious and Google Bookmarks do not allow folders or separators, only bookmarks.
- Because they are typically huge, useless to Clients except Safari, and can cause errors in some Clients, the Safari Logins Bookmarklet created by 1Password version 3.x, and the old 1Password bookmarklet created by 1Password version 2.x, are exported only to Safari Clients.
- Safari does not allow separators “out of the box”. But instead of not exporting them, Smarky, Synkmark, Markster, and BookMacster convert separators when exporting to Safari to its own fake separators, or to Glims separators if you have Glims 1.0 or later installed.

## 4.3.18 Clients’ Hidden Proprietary Attributes

Some web browsers have esoteric, proprietary attributes on their bookmarks which are of no interest to Smarky, Synkmark, Markster, BookMacster, you, or other browsers. For example, Opera sports an “ACTIVE” attribute to indicate that an item is selected in Opera’s Manage Bookmarks window, so that if you quit Opera and relaunch, that same item will be selected. OmniWeb also adds several of its own attributes that hardly anyone even knows exist.

The app ignores such hidden proprietary attributes during an Import operation, and will therefore not pass them to another Client of the same type (another Opera, for example) if your Bookmarkshelf document is synced to another Mac as part of your multi-device syncing strategy.

During an Export operation, the app preserves these attributes in the local Client.

## 4.3.19 Normalization of URLs

Some local Clients, notably Chrome and Firefox, and in particular the web app Clients (Google Bookmarks, Pinboard, Delicious) apply minor corrections or what we call normalization to the URLs of your bookmarks. For example, launch Firefox Show All Bookmarks, create a new bookmark and type in the URL “http://apple.com”. Notice that when you hit ‘return’, Firefox automatically adds a slash character to the end of the bookmark (signifying an empty “path” portion).

Actually this change can occur in one or more of three places:

- What URL you see in the Show [All] Bookmarks, web page, or similar user interface

- What URL they visit when you click the bookmark.

- What URL gets returned to BookMacster when it downloads your bookmarks as part of an Import operation.

The last item is the one relevant to Smarky, Synkmark, Markster, and BookMacster. This is because these apps merge incoming and existing bookmarks during an Import or Export operation. For example, let’s say you that your perform an Export in BookMacster to Google Bookmarks, which uploads a bookmark whose URL is http://UpPpeR.cOM. If you later perform an Import from this Google account, BookMacster will receive a URL which has been normalized to contain only lower-case characters in the host portion, http://upper.com.

To minimize confusion and churning of bookmarks, the apps also normalize any bookmark that you enter into it. There are a couple dozen rules in our algorithm, and our My Eyes Glaze Over Department did not allow us to enter them here. Generally, the app mimics the behavior of Firefox and Chrome, which we have found to be reasonable except for a couple cases. Therefore, since the exported URL is already normalized, the Client will not make any further changes, and churn rarely occurs. One of these rare instances is when the path of a URL ends in ‘index.html’ and it is exported to Google Bookmarks. Google Bookmarks incorrectly, we believe, omits the ‘index.html’, and therefore when you re-import such a bookmark into BookMacster for the first time, an “update” of its URL will be tallied.

## 4.3.20 Undo and Redo

In Smarky, Synkmark, Markster, and BookMacster, as in most applications, Undo and Redo recall the state of the document (the Bookmarkshelf()) before or after an action was performed and simply replace the current state with the the prior state. That is, they reverse the effect of the action on the document but do not, as their title implies, actually undo or redo the action.

This subtle difference is apparent with Import command. After you Import, the Edit menu’s Undo item will be titled “Undo Import”. If you click this, your Bookmarkshelf’s content will be set back to the way it was before you imported from the browser/file(s).

Then, the Undo item will titled “Redo Import”. Now if you click this, your Bookmarkshelf’s content will be set back to the way it was after you imported from the Import Client(s), reflecting the content in the Client(s) at the time the original import was done. Thus, Redo recalls the content in the Clients at the the time the original import was done. Redo does not import their current contents, which may be different if data was changed within the Client, for example by adding a bookmark, in the meantime.

This concept is even more apparent when performing an Export. The app’s Undo domain does not extend into other apps. And there is no Undo action available after an export; the Unsaved Changes Dot is not affected. (Actually, the app does record the time of the export for considering whether future exports need to be done, but this change is recorded in Local Settings and therefore does not change the Bookmarkshelf. If it did, this would cause Online File Syncing Services to upload this local “change” to their server after saving, which would be incorrect.)

There are two ways to restore pre-export content in the Client itself. The first way is to restore the content of a Bookmarkshelf to the way it was before the export in the client, and then export again. The second way, available to advanced users and not applicable to web app Clients, is to quit the Client application, then restore the relevant file(s) from a Time Machine or other backup.

## 4.3.21 Reading Your Sync History

### Reading the Status Bar after an Import or Export

After an Import or Export operation, the numbers +, Δ, ↕ and - respectively indicate the number of additions, updates, slides or deletions as a result of the operation. The indication Same-Skip indicates that operation was skipped because the app pre-determined there to be no differences between the content in the source and that of the destination.

### Sync Logs

For more detailed and longer-term history, the Reports > Sync Log tab shows the changes to your Content which occurred during recent Import/Export operations.

#### Changes

There are five types of Changes:

- Additions (abbreviated: +) are new items which previously did not exist in the destination.

- Updates (abbreviated: Δ) are changes to one or more of the nontrivial attributes, except for position (which is a slide), of existing items in the destination. Updates are indicated by the Greek letter delta, the triangle, Δ. An item which was both slid and updated is counted only as an update.

- Moves (abbreviated: ↖) are moves of items to a different parent.

- Slides (abbreviated: ↕) are moves of items within the same folder (parent). If an item is added at the top of a folder containing 3 items, the 3 items below it will undergo a slide. Sorting bookmarks produces only slides.

- Deletions (abbreviated: -) are items deleted from the destination.

Here’s an example. Say that you have just imported from Safari. Next, you switch to Safari and add a bookmark, placing it above 12 existing bookmarks in a given parent folder. Now, switch back to the app and import again. The Status Bar will indicate “Safari (+1, Δ1, ↖0, ↕12, -0)”. The +1 is, of course, the new bookmark. The Δ1 indicates the new item’s parent folder, because it gained a child. The ↕12 indicates the 12 items changed which were slid (had their position incremented by one) in order to make room for the new bookmark.

In some oddball cases, it might take more than one of Import and Export before the number of changes stabilizes to +0 Δ0 ↖0 ↕0 -0. Here’s an example to illustrate the point. Say that a Bookmarkshelf’s Client settings list Camino and Safari with both Import and Export active. A bookmark is added at the root level in Safari. Say that in the Bookmarkshelf’s Structure, bookmarks are allowed at Root. During the next Import, this is imported to the Bookmarkshelf at the root level. During the next Export, it is exported to Camino, but since Camino does not allow bookmarks at Root, it goes to the Default Parent for Camino, which is, say, the Bookmarks Menu. (This is the default setting.) So it is exported to the Bookmarks Menu in Camino. Say that in the Bookmarkshelf’s Clients, Camino Advanced settings are set to Keep items from Camino instead of the Bookmarkshelf. (This is also a default setting.) Also say that Camino precedes Safari. Thus, during the next Import, this bookmark will be moved into the Bookmarks Menu. Then, during the next Export, it will also be moved to the Bookmarks Menu in Safari, and, finally, during the next Import there will be no more changes. Summarizing, we had two Imports and two Exports before we finally saw no changes in the next Import.

## 4.3.22 How Our Apps Access Browser (Client) Content

In order to execute an Import or Export command, Smarky, Synkmark, Markster and BookMacster must somehow access the bookmarks content of the Client that you chose in the popup menu in Settings > Clients.

This section explains how that is done, for each of the different types of Clients.

### Accessing Locally-Installed Browser Apps’ Bookmarks

#### Bookmarks in your Macintosh User Account

The apps has two methods for importing from and exporting to Locally-installed browser apps (Safari, Firefox, etc.). The app automatically chooses the appropriate method based on current conditions.

The quick direct sync is to import from and/or export to the file or files on the disk which the browser app itself uses. This is the only method available with Safari. Safari allows us to do this while Safari is running, provided that we are careful to maintain iCloud data. This is also the only method availalable with Opera and the older browsers, although in these cases our app must quit the browser before importing and/or exporting. If the desired operation cannot be safely performed without quitting a running browser app, our app presents a dialog asking you if it is OK to quit the app, and then to re-launch it when done. Our app can also use the quick direct sync for Chrome and Firefox.

The other method is the coordinated sync. This method, which is only available in Chrome and Firefox, communicates the import or export through a browser add-on, and hence works while a browser app is running. Our app installs the browser add-on into your browser profile when you add Chrome or Firefox as a Client. For Chrome, this is done silently, while Firefox requires your OK.

#### Launch Browser to Coordinate with Other Sync Services

In multi-device sync configurations, our app’s imports and exports must be coordinated with other services sign as Chrome’s Sign In to Google or Firefox’ Firefox Sync, and in general this means that the coordinated sync described above must be used, and therefore the browser must be launched if it is not running.

A simple example explains why. Say that our app is syncing Safari and Chrome, and you also have Chrome on your iPhone synced to Chrome on your Mac via Sign in to Google. When you add a new bookmark in Safari, our app could export that to Chrome using the quick direct sync if Chrome was not running, but only Chrome can push that new bookmark to Chrome on your iPhone, which won’t happen if Chrome is not running. The same thing happens in the reverse direction; a bookmark added to Chrome on your iPhone can not show up in our app or Safari without Chrome’s help.

Therefore, before an Import or Export, if Chrome or Firefox are involved and are not running, our app looks to see if Sign in to Google or Firefox Sync are active in the profiles involved, and if so, by default it automatically launches Chrome or Firefox.

If you have our advanced app, BookMacster, you can control this behavior by clicking the tab Settings > Clients, and then clicking the Advanced Client Settings (gear) button for the subject Chrome or Firefox profile.

In the Special Settings section you will see a popup menu to set launch browser during Syncs.

If you do not want to leave Chrome or Firefox running in the background, and you find it annoying when our app launches them automatically, and you don’t mind bookmarks syncing being delayed, or occasional omitted bookmarks due to conflicts, you may change this setting to Never.

The opposite situation arises if you using another external syncinc service instead of the built-in Sign in to Google or Firefox Sync. In this case, such a service may have its own add-on installed into Chrome or Firefox, and again, our app should launch Chrome or Firefox prior to an import or export in order to coordinate syncing with it. But our app is not aware of external syncing services. To fix this, you can make sure that syncing is always properly coordinated by setting the popup to Always.

But you can make all of the above moot. There are two other solutions to eliminate the annoyance of browsers launching and quitting while maintaining reliable bookmarks sync.

Solution 1. If you are not using Chrome or Firefox on other devices, and do not need Sign in to Google or Firefox Sync, turn them off. That is, for Chrome Sign out of your Google account, or at least switch off the Bookmarks option under Advanced Sync Settings. For Firefox, in Preferences > Sync, either Unlink this Device or at least switch off the Bookmarks checkbox.

Solution 2. add Firefox or Chrome to your Login Items, and just leave them running. You can close all of their windows if you are not using them. With no open windows, there is not much activity, and, thanks to the use of modern virtual memory by Mac OS X, there will not be any noticeable performance degradation. This is even more so if you have Mac OS X 10.9 which features App Nap. I hardly ever bother quitting apps on this MacBook Air. Currently it has been running or sleeping for 4 days, and I have 35 apps running.

#### Bookmarks in Other Macintosh User Accounts

When you set a Client on an Other Macintosh User Account, BookMacster accesses the same file it would access normally, except if looks in a different Home Folder.

Authentication may be required. If BookMacster cannot obtain the required credential from your Mac OS X Keychain, it will ask you. However, if one of BookMacster’s Agent’s Workers cannot obtain a required credential for some reason, it will simply fail and try again the next time it is triggered.

In contrast to how BookMacster accesses bookmarks in your Macintosh User Account (explained in the previous section), on other Mactintosh user accounts, only the quick direct sync method is available. Neither BookMacster nor its Workers check to see if a web browser is running when accessing files on an Other Macintosh User Account, although it does warn you to check. Thus, if you are using this advanced feature, you need to be careful about whether or not web browsers are running in the other account. To be safe, just quit them before importing or exporting.

### Accessing Web Apps

The bookmarks of web-based browser apps such as Delicious can be accessed at any time, typically using an “application programming interface” (API). Where available, BookMacster uses such an API. The web apps’ synchronize changes uploaded and downloaded by BookMacster.

Accessing content from a web app requires that BookMacster be able to get a password from your Mac OS X Keychain If you want a BookMacster Agent to be importing from or exporting to a web app, when setting the Client, make sure to check the box that says Keep in my Mac OS X Keychain.

In order to minimize loading on their servers, web apps require that BookMacster maintain a local cache of your bookmarks content. Sometimes a glitch may result in the server telling BookMacster that its local cache is synchronized with their data when in fact it is not. If you are seeing inconsistencies between BookMacster and a web app, you can force BookMacster to re-download all bookmarks content from the server on the next import by emptying BookMacster’s local cache. To do this, in the menu click BookMacster > Empty Cache. The web apps don’t like if you do this too frequently (within minutes) and may temporarily ban your IP address if they feel offended. BookMacster keeps track of this for you, if you are in danger of being banned, usually warns you and refuses to perform the command.

### Accessing Bookmarks in Loose Files

When you set a Client using the Choose File (Advanced). item in the popup menu it the Import or Export table, BookMacster remembers the Macintosh file system’s “alias” so that if you move the file, it cam still be found. Again, no checks or warnings on browser running are made before performing an Import or Export.

Home | Parent | ← Go → | Prior | Next