Giter Site home page Giter Site logo

sobjornstad / tiddlyremember Goto Github PK

View Code? Open in Web Editor NEW
64.0 6.0 7.0 7.15 MB

Embed Anki notes in your TiddlyWiki

Home Page: https://sobjornstad.github.io/TiddlyRemember/

License: MIT License

Makefile 0.01% Python 2.56% CSS 0.03% Shell 0.02% HTML 97.38%
tiddlywiki5 tiddlywiki-plugin anki anki-addon anki21

tiddlyremember's People

Contributors

sobjornstad avatar sortega 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

tiddlyremember's Issues

Feature request: Support for custom note-types

I don't know if this is something that others would find useful but I thought I'd suggest it anyhow.

It would be cool if there was a macro that allowed you to define which Anki note-type you want to sync to, and then accepted parameters for whatever fields you want.

So for example say I have a note-type in Anki called "Book" with the fields "title", "author" and "year", it might look something like this:

<<remembercustom "20200731024148369"
  note-type:"Book"
  title:"The Hobbit"
  author:"Tolkien"
  year:"1937"
>>

Thanks for the great plugin!

UnboundLocalError: local variable 'extra' referenced before assignment

Hi,

Error message received when syncing Anki to a TiddlyStudy wiki:

`Error
An error occurred. Please start Anki while holding down the shift key, which will temporarily disable the add-ons you have installed.
If the issue only occurs when add-ons are enabled, please use the Tools>Add-ons menu item to disable some add-ons and restart Anki, repeat until you discover the add-on that is causing the problem.
When you've discovered the add-on that is causing the problem, please report the issue on the add-ons section of our support site.
Debug info:
Anki 2.1.49 (dc80804a) Python 3.8.1 Qt 5.15.1 PyQt 5.15.1
Platform: Linux
Flags: frz=True ao=True sv=2
Add-ons, last update check: 2021-12-10 13:16:18
Add-ons possibly involved: ⁨TiddlyRemember⁩

Caught exception:
Traceback (most recent call last):
File "/home/user/.local/share/Anki2/addons21/60456529/twimport.py", line 71, in _invoke_tw_command
proc = subprocess.run(cmd, cwd=wiki_path, stdout=subprocess.PIPE,
File "subprocess.py", line 512, in run
subprocess.CalledProcessError: Command '['tiddlywiki', '--verbose', '--output', '/tmp/tmpst82akfo/render', '--render', '[type[text/vnd.tiddlywiki]] [type[]] +[!is[system]]', '[encodeuricomponent[]addsuffix[.html]]', 'text/html', '$:/plugins/sobjornstad/TiddlyRemember/templates/TiddlyRememberParseable']' returned non-zero exit status 1.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/user/.local/share/Anki2/addons21/60456529/importer.py", line 185, in join_thread
if self.handle_thread_exception():
File "/home/user/.local/share/Anki2/addons21/60456529/importer.py", line 173, in handle_thread_exception
raise exc
File "/home/user/.local/share/Anki2/addons21/60456529/importer.py", line 57, in run
self.notes = twimport.find_notes(
File "/home/user/.local/share/Anki2/addons21/60456529/twimport.py", line 247, in find_notes
render_wiki(tw_binary, wiki_folder, render_location, filter)
File "/home/user/.local/share/Anki2/addons21/60456529/twimport.py", line 175, in _render_wiki
_invoke_tw_command(cmd, wiki_path, "render wiki")
File "/home/user/.local/share/Anki2/addons21/60456529/twimport.py", line 86, in _invoke_tw_command
f"Failed to {description}: return code {proc.returncode}.\n{extra}"
UnboundLocalError: local variable 'extra' referenced before assignment`

Should extra variable superfluous?

Thanks.

Feature Request: Allow hiding questions from tiddlers

Hi, this plugin/add-on is great, thanks.

I know it's doable by tinkering in the plugin tiddlers/css, and I'll probably do it once I have some time, but could you consider having a setting that allows hiding Q/A's from the rendered tiddlers (or just showing a small icon showing that an Anki question is present at that point? At the moment, the Q/A take up a lot of space, and are kind of redundant (as I will typically have the information as part of the Tiddler's text, and then the Q/A below it).

If you point me to where and how you'd like to see this implemented, I could probably whip up a pull request t some point.

Reconsider putting fields in a `<p>` element

While this seems a natural fit for the front or back of a card in most cases, it imposes some limitations on what content can go there. It may be better to switch over to a <div> element.

We'll need to preserve backwards compatibility in some way here; proving that we haven't messed up anybody's cards may be a challenge, so it might be better to save this for a major release.

Anki not syncing

Hello,

I followed the installation instructions on the TiddlyRemember wiki (so I dragged the plugin from there) and I got this error when trying to sync with my file:

Debug info:
Anki 2.1.35 (84dcaa86) Python 3.8.0 Qt 5.14.2 PyQt 5.14.2
Platform: Windows 10
Flags: frz=True ao=True sv=1
Add-ons, last update check: 2020-10-09 04:35:39

Caught exception:
Traceback (most recent call last):
File "C:\Users\Aqua8\AppData\Roaming\Anki2\addons21\60456529\twimport.py", line 58, in _invoke_tw_command
proc = subprocess.run(cmd, cwd=wiki_path, stdout=subprocess.PIPE,
File "subprocess.py", line 512, in run
subprocess.CalledProcessError: Command '['C:\Users\Aqua8\AppData\Roaming\npm\tiddlywiki.cmd', '--output', 'C:\Users\Aqua8\AppData\Local\Temp\tmp5v0mhgnd\render', '--render', '[type[text/vnd.tiddlywiki]] [type[]] +[!is[system]]', '[encodeuricomponent[]addsuffix[.html]]', 'text/html', '$:/plugins/sobjornstad/TiddlyRemember/templates/TiddlyRememberParseable']' returned non-zero exit status 1.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\Users\Aqua8\AppData\Roaming\Anki2\addons21\60456529_init_.py", line 142, in join_thread
raise self.extract_thread.exception
File "C:\Users\Aqua8\AppData\Roaming\Anki2\addons21\60456529_init_.py", line 60, in run
self.notes = twimport.find_notes(
File "C:\Users\Aqua8\AppData\Roaming\Anki2\addons21\60456529\twimport.py", line 188, in find_notes
render_wiki(tw_binary, wiki_folder, render_location, filter)
File "C:\Users\Aqua8\AppData\Roaming\Anki2\addons21\60456529\twimport.py", line 145, in _render_wiki
_invoke_tw_command(cmd, wiki_path, "render wiki")
File "C:\Users\Aqua8\AppData\Roaming\Anki2\addons21\60456529\twimport.py", line 69, in _invoke_tw_command
raise Exception(f"Failed to {description}: return code {proc.returncode}.\n"
Exception: Failed to render wiki: return code 1.
$ C:\Users\Aqua8\AppData\Roaming\npm\tiddlywiki.cmd --output C:\Users\Aqua8\AppData\Local\Temp\tmp5v0mhgnd\render --render [type[text/vnd.tiddlywiki]] [type[]] +[!is[system]] [encodeuricomponent[]addsuffix[.html]] text/html $:/plugins/sobjornstad/TiddlyRemember/templates/TiddlyRememberParseable

undefined:1


I saw TiddlyRememberParseable in the first error and checked it out. The content says "Recursive transclusion error in transclude widget." I have tried installing TiddlyRemember in an empty wiki and the error is still there. Can you fix this or is it a problem on my end?

Reversed note type

Hi, just recently I came around your plugin, thanks for it! It's the perfect choice to extend notes in TiddlyWiki as stated in these articles.

I'd like to ask, if it's possible to add a new note type which would behave like basic reversed type?

It would be a great addition to my workflow, but I don't know if it's something that's needed to be integrated into add-on or I can setup it manually in my Anki configuration.

Thanks.

OSError: [WinError 145] The directory is not empty

Hey,

I get this error when attempting to sync.

Debug info:
Anki 2.1.38 (355e4cd5) Python 3.8.6 Qt 5.14.2 PyQt 5.14.2
Platform: Windows 10
Flags: frz=True ao=True sv=1
Add-ons, last update check: 2021-04-23 12:06:35

Caught exception:
Traceback (most recent call last):
  File "C:\Users\yaren\AppData\Roaming\Anki2\addons21\60456529\__init__.py", line 187, in join_thread
    if self.handle_thread_exception():
  File "C:\Users\yaren\AppData\Roaming\Anki2\addons21\60456529\__init__.py", line 175, in handle_thread_exception
    raise exc
  File "C:\Users\yaren\AppData\Roaming\Anki2\addons21\60456529\__init__.py", line 62, in run
    self.notes = twimport.find_notes(
  File "C:\Users\yaren\AppData\Roaming\Anki2\addons21\60456529\twimport.py", line 202, in find_notes
    notes = _notes_from_paths(
  File "tempfile.py", line 827, in __exit__
  File "tempfile.py", line 831, in cleanup
  File "tempfile.py", line 813, in _rmtree
  File "shutil.py", line 737, in rmtree
  File "shutil.py", line 610, in _rmtree_unsafe
  File "shutil.py", line 610, in _rmtree_unsafe
  File "shutil.py", line 619, in _rmtree_unsafe
  File "shutil.py", line 617, in _rmtree_unsafe
OSError: [WinError 145] The directory is not empty: 'C:\\Users\\yaren\\AppData\\Local\\Temp\\tmp6a1eapcz\\wikifolder\\tiddlers'

I've attempted to remove the temporary folder & re-run, but the issue remains.

image

I've tried moving the wiki to a different different directory (like download) but no luck.

Thanks 😇

Support importing images (and other media?) into Anki

As of 1.2, it will be possible to include images on TiddlyRemember notes, but it will only work properly if they are external to the wiki and the URL is accessible both from the link and from all devices you review from. We should be able to import the media into Anki's media collection on sync, so that it will follow the collection – ideally, including if the image is embedded in the TiddlyWiki.

Non-ascii characters get garbled

With questions including non-ascii characters:

<<rememberq "20200923152852640"
	"What 'élan vital' means?"
	"The 'vital force' that 'explains' biology and that inorganic matter lacks">>

The text is garbled during the import to Anki:
imagen

Import error

First of all, I want to thank you for creating this plugin. I think it's an amazing idea to bridge tiddlywiki and Anki and I'm eager to try it.

However, I get this error when trying to syncronize:

Error
An error occurred. Please start Anki while holding down the shift key, which will temporarily disable the add-ons you have installed.
If the issue only occurs when add-ons are enabled, please use the Tools > Add-ons menu item to disable some add-ons and restart Anki, repeating until you discover the add-on that is causing the problem.
When you've discovered the add-on that is causing the problem, please report the issue on the add-on support site.
Debug info:
Anki 2.1.24 (359b9f5c) Python 3.8.0 Qt 5.13.1 PyQt 5.14.1
Platform: Mac 10.15.4
Flags: frz=True ao=True sv=2
Add-ons, last update check: 2020-05-28 20:46:42
Add-ons possibly involved: ⁨TiddlyRemember⁩

Caught exception:
Traceback (most recent call last):
  File "/Users/sortega/Library/Application Support/Anki2/addons21/60456529/twimport.py", line 57, in _invoke_tw_command
    proc = subprocess.run(cmd, cwd=wiki_path, stdout=subprocess.PIPE,
  File "subprocess.py", line 512, in run
subprocess.CalledProcessError: Command '['/Users/sortega/opt/tiddlywiki/node_modules/.bin/tiddlywiki', '--output', '/var/folders/s3/9dx35k0d15z32c5hm51hwr980000gn/T/tmpvzlti1ox/render', '--render', '[type[text/vnd.tiddlywiki]] [type[]] +[!is[system]]', '[encodeuricomponent[]addsuffix[.html]]', 'text/html', '$:/plugins/sobjornstad/TiddlyRemember/templates/TiddlyRememberParseable']' returned non-zero exit status 7.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/sortega/Library/Application Support/Anki2/addons21/60456529/__init__.py", line 141, in join_thread
    raise self.extract_thread.exception
  File "/Users/sortega/Library/Application Support/Anki2/addons21/60456529/__init__.py", line 59, in run
    self.notes = twimport.find_notes(
  File "/Users/sortega/Library/Application Support/Anki2/addons21/60456529/twimport.py", line 186, in find_notes
    _render_wiki(tw_binary, wiki_folder, render_location, filter_)
  File "/Users/sortega/Library/Application Support/Anki2/addons21/60456529/twimport.py", line 143, in _render_wiki
    _invoke_tw_command(cmd, wiki_path, "render wiki")
  File "/Users/sortega/Library/Application Support/Anki2/addons21/60456529/twimport.py", line 68, in _invoke_tw_command
    raise Exception(f"Failed to {description}: return code {proc.returncode}.\n"
Exception: Failed to render wiki: return code 7.
$ /Users/sortega/opt/tiddlywiki/node_modules/.bin/tiddlywiki --output /var/folders/s3/9dx35k0d15z32c5hm51hwr980000gn/T/tmpvzlti1ox/render --render [type[text/vnd.tiddlywiki]] [type[]] +[!is[system]] [encodeuricomponent[]addsuffix[.html]] text/html $:/plugins/sobjornstad/TiddlyRemember/templates/TiddlyRememberParseable

$:/plugins/chanilino/viz/lite.render.js:7
var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module["arguments"]=[];Module["thisProgram"]="./this.program";Module["quit"]=(function(status,toThrow){throw toThrow});Module["preRun"]=[];Module["postRun"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("Module['ENVIRONMENT'] value is not valid. must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="

ReferenceError: document is not defined
    at Object.$tw.utils.domMaker (/Users/sortega/opt/tiddlywiki/node_modules/tiddlywiki/boot/boot.js:160:32)
    at VizWidget.create ($:/plugins/chanilino/viz/vizWidget.js:55:33)
    at VizWidget.render ($:/plugins/chanilino/viz/vizWidget.js:19:28)
    at ElementWidget.Widget.renderChildren ($:/core/modules/widgets/widget.js:390:15)
    at ElementWidget.render ($:/core/modules/widgets/element.js:49:7)
    at TranscludeWidget.Widget.renderChildren ($:/core/modules/widgets/widget.js:390:15)
    at TranscludeWidget.render ($:/core/modules/widgets/transclude.js:33:7)
    at ImportVariablesWidget.Widget.renderChildren ($:/core/modules/widgets/widget.js:390:15)
    at ImportVariablesWidget.render ($:/core/modules/widgets/importvariables.js:33:7)
    at SetWidget.Widget.renderChildren ($:/core/modules/widgets/widget.js:390:15)

It happens regardless of where the wiki is (either in an URL, or as local file). I've tried to run the render command myself and I get the same error:

/Users/sortega/opt/tiddlywiki/node_modules/.bin/tiddlywiki --output /tmp/render1 --render '[type[text/vnd.tiddlywiki]] [type[]] +[!is[system]] [encodeuricomponent[]addsuffix[.html]]' text/html '$:/plugins/sobjornstad/TiddlyRemember/templates/TiddlyRememberParseable'
$:/plugins/chanilino/viz/lite.render.js:7
var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module["arguments"]=[];Module["thisProgram"]="./this.program";Module["quit"]=(function(status,toThrow){throw toThrow});Module["preRun"]=[];Module["postRun"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("Module['ENVIRONMENT'] value is not valid. must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="

Any idea?

Possible tiddler name length limitation issue

2dead65 realized that URL-encoding filenames was not quite as perfect and easy a fix as it seemed. Another potential future problem -- URL encoding can cause name lengths to blow up since it uses 3 characters per byte, so this might put the maximum tiddler title length quite low if your OS, like most, has a limit of 255 characters on a filename. Even lower on Windows if the 259-character max path length is in effect.

Investigate this to see if there are better ways to fix the issue.

Ignore curly braces contained within a code block

Hi Soren.

A cloze card like the following causes a sync error, presumably because of the open curly bracket:

<<remembercz "20210710114236368"
    """
        ''CSS: ID selector syntax''
        <br><br>
        {`#`}`id-name {...`
    """
>>

In my opinion TiddlyRemember should ignore curly braces contained within a code block. It seems reasonable to assume that there are many cases where a user might want include a curly bracket in a cloze card without also invoking a new cloze element.

Thanks for the great plugin.

Cannot sync embedded images from file wikis

Due to the path handling code trying to relativize paths to work with _canonical_uri, it's currently impossible in 1.3.0 to sync embedded images from a file or URI wiki. Folder wikis work fine, as do images which use _canonical_uri in file/URL wikis; my test cases didn't cover this combination due to an oversight.

The condition on line 643 in twnote.py just needs to be changed to exclude URIs that start with data: to correct this problem.

Feature Request: Copy the tiddler tags to the Anki notes tags

Not sure if this makes sense for other users, but I think to better organize your generated cards in Anki and maybe use Filtered Decks it would be interesting to copy automatically the tiddler tags into the generated Anki notes tags.

Maybe it shouldn't be a default behavior, but something the user can enable optionally.

Single '}' encountered in format string

Today I tried syncing my wiki with anki and got the following error:

Debug info:
Anki 2.1.29 (bbff62bf) Python 3.8.0 Qt 5.15.0 PyQt 5.15.0
Platform: Mac 10.14.6
Flags: frz=True ao=True sv=1
Add-ons, last update check: 2020-10-20 14:54:16
Add-ons possibly involved: ⁨TiddlyRemember⁩

Caught exception:
Traceback (most recent call last):
  File "/Users/kebi/Library/Application Support/Anki2/addons21/60456529/__init__.py", line 142, in join_thread
    raise self.extract_thread.exception
  File "/Users/kebi/Library/Application Support/Anki2/addons21/60456529/__init__.py", line 60, in run
    self.notes = twimport.find_notes(
  File "/Users/kebi/Library/Application Support/Anki2/addons21/60456529/twimport.py", line 189, in find_notes
    notes = _notes_from_paths(
  File "/Users/kebi/Library/Application Support/Anki2/addons21/60456529/twimport.py", line 91, in _notes_from_paths
    notes.update(_notes_from_tiddler(tid_text, wiki_name, tid_name))
  File "/Users/kebi/Library/Application Support/Anki2/addons21/60456529/twimport.py", line 113, in _notes_from_tiddler
    return TwNote.notes_from_soup(soup, wiki_name, tiddler_name)
  File "/Users/kebi/Library/Application Support/Anki2/addons21/60456529/twnote.py", line 73, in notes_from_soup
    notes.update(subclass.parse_html(soup, wiki_name,
  File "/Users/kebi/Library/Application Support/Anki2/addons21/60456529/twnote.py", line 328, in parse_html
    parsed_text = ankify_clozes(text)
  File "/Users/kebi/Library/Application Support/Anki2/addons21/60456529/clozeparse.py", line 128, in ankify_clozes
    return placeholder_text.format(*(i.anki_occlusion for i in occlusions))
ValueError: Single '}' encountered in format string

Does this mean that there is a closing curly bracket without its opening curly bracket somewhere in my tiddlers?
If so, is there a way to debug the plugin and see where it gets stuck?

403 error when trying to sync certain images

I receive the warning below when I try to Sync from TiddlyWiki.

*** 1 warning: ***
Image 'https://thedailyshot.com/wp-content/uploads/EQ-Holding-period2109240432.png' in tiddler 
'Test note' could not be retrieved at sync time: 404 Not Found.

Although it does not prevent the image to be embedded in the Anki card, it stops the sync process asking for confirmation before continuing.

Steps to reproduce:

  1. Download an empty TW

  2. Add the TiddlyRemember plugin

  3. Install TR in Anki

  4. Create a new note with the question below

     <<rememberq "20211116114723852"
     "Test image."
     "[img[https://thedailyshot.com/wp-content/uploads/EQ-Holding-period2109240432.png]]">>
    
  5. Sync the wiki in Anki app

  6. Result: a warning is displayed

I am not sure if this is a problem or not because the image ends up in the Anki card despite the warning.

Option to prefix/suffix generated unique IDs

It might be useful to support a wiki identifier that could be added to unique IDs, to avoid possible conflicts; if multiple users are working on and sharing content, they could plausibly (though very rarely) end up creating conflicting IDs by starting new items at the same millisecond.

Improvement request: only sync tiddlers with a 'lastmodified' date that is more recent than the last sync

I have a very large wiki that contains all my notes from several years of university. Currently, syncing to Anki takes around 3-5 minutes, and sends my laptop fan spinning like crazy.

Would it be possible to add a setting that allows only syncing tiddlers that have been modified since the last sync, as well as new tiddlers? This should dramatically reduce the amount of tiddlers that need to be rendered (and thus improve performance)

Keep up the great work, this plugin has tremendously improved my learning experience !

Auth basic password protected wiki not syncing

My wiki setup with a wiki password protected with auth basic is no longer working with the new release. This is the relevant error snippet with my password redacted:

Caught exception:
Traceback (most recent call last):
  File "http/client.py", line 871, in _get_hostport
ValueError: invalid literal for int() with base 10: '*******************@tiddlywiki.refeed.org'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/sortega/Library/Application Support/Anki2/addons21/60456529/importer.py", line 185, in join_thread
    if self.handle_thread_exception():
  File "/Users/sortega/Library/Application Support/Anki2/addons21/60456529/importer.py", line 173, in handle_thread_exception
    raise exc
  File "/Users/sortega/Library/Application Support/Anki2/addons21/60456529/importer.py", line 57, in run
    self.notes = twimport.find_notes(
  File "/Users/sortega/Library/Application Support/Anki2/addons21/60456529/twimport.py", line 248, in find_notes
    notes = _notes_from_paths(
  File "/Users/sortega/Library/Application Support/Anki2/addons21/60456529/twimport.py", line 110, in _notes_from_paths
    notes.update(_notes_from_tiddler(tid_text, wiki, tid_name, warnings))
  File "/Users/sortega/Library/Application Support/Anki2/addons21/60456529/twimport.py", line 134, in _notes_from_tiddler
    return TwNote.notes_from_soup(soup, wiki, tiddler_name, warnings)
  File "/Users/sortega/Library/Application Support/Anki2/addons21/60456529/twnote.py", line 147, in notes_from_soup
    notes.update(subclass.parse_html(
  File "/Users/sortega/Library/Application Support/Anki2/addons21/60456529/twnote.py", line 321, in parse_html
    pair = extract_media(media, pair, wiki, tiddler_name, warnings)
  File "/Users/sortega/Library/Application Support/Anki2/addons21/60456529/twnote.py", line 659, in extract_media
    with urlopen(open_src) as response:
  File "urllib/request.py", line 222, in urlopen
  File "urllib/request.py", line 525, in open
  File "urllib/request.py", line 542, in _open
  File "urllib/request.py", line 502, in _call_chain
  File "urllib/request.py", line 1393, in https_open
  File "urllib/request.py", line 1319, in do_open
  File "http/client.py", line 1382, in __init__
  File "http/client.py", line 833, in __init__
  File "http/client.py", line 876, in _get_hostport
http.client.InvalidURL: nonnumeric port: '*********@tiddlywiki.refeed.org'

I have non-alphanumeric characters in there just in case it's useful.

It's possible to accidentally add an empty wiki entry in the settings

Steps to reproduce:

  1. Start with a valid configuration in Tools > Add-ons > TiddlyRemember.
  2. Click "Add". Don't fill anything in.
  3. Click OK.

The next sync will fail since it's trying to find a wiki with no path, and it's nearly impossible to see what's wrong in the interface
since the empty entry has no name and is consequently invisible in the list box.

Proposed fix:

  • Completely empty wiki entries should be silently discarded on exiting the dialog.
  • Empty wiki names should be forbidden.
  • The name of the wiki whose file doesn't exist should be displayed on the error message when syncing for further context. (In many different ways you could have entered an empty or malformed path, it may not be clear which entry is having the problem.)

Error when datepicker plugin is enabled

Hi,

First of all, many thanks for coding this plugin, it has been very helpful.

I've run into the below error when I tried to use TiddlyRemember and the datepicker plugin (https://github.com/kixam/TW5-datePicker) together. If I disable the datepicker plugin before to synchronize, the error disappears.

Regards,
Sammy

Anki 2.1.38 (355e4cd5) Python 3.8.1 Qt 5.15.1 PyQt 5.15.1
Platform: Linux
Flags: frz=True ao=True sv=1
Add-ons, last update check: 2021-01-24 02:14:22
Add-ons possibly involved: ⁨TiddlyRemember⁩

Caught exception:
Traceback (most recent call last):
  File "/home/scarbajali/.local/share/Anki2/addons21/60456529/twimport.py", line 61, in _invoke_tw_command
    proc = subprocess.run(cmd, cwd=wiki_path, stdout=subprocess.PIPE,
  File "subprocess.py", line 512, in run
subprocess.CalledProcessError: Command '['/usr/local/bin/tiddlywiki', '--output', '/tmp/tmpsnzwgbu6/render', '--render', '[type[text/vnd.tiddlywiki]] [type[]] +[!is[system]!tag[tmap]]', '[encodeuricomponent[]addsuffix[.html]]', 'text/html', '$:/plugins/sobjornstad/TiddlyRemember/templates/TiddlyRememberParseable']' returned non-zero exit status 1.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/scarbajali/.local/share/Anki2/addons21/60456529/__init__.py", line 187, in join_thread
    if self.handle_thread_exception():
  File "/home/scarbajali/.local/share/Anki2/addons21/60456529/__init__.py", line 175, in handle_thread_exception
    raise exc
  File "/home/scarbajali/.local/share/Anki2/addons21/60456529/__init__.py", line 62, in run
    self.notes = twimport.find_notes(
  File "/home/scarbajali/.local/share/Anki2/addons21/60456529/twimport.py", line 201, in find_notes
    _render_wiki(tw_binary, wiki_folder, render_location, filter_)
  File "/home/scarbajali/.local/share/Anki2/addons21/60456529/twimport.py", line 158, in _render_wiki
    _invoke_tw_command(cmd, wiki_path, "render wiki")
  File "/home/scarbajali/.local/share/Anki2/addons21/60456529/twimport.py", line 72, in _invoke_tw_command
    raise RenderingError(
60456529.oops.RenderingError: Failed to render wiki: return code 1.
$ /usr/local/bin/tiddlywiki --output /tmp/tmpsnzwgbu6/render --render [type[text/vnd.tiddlywiki]] [type[]] +[!is[system]!tag[tmap]] [encodeuricomponent[]addsuffix[.html]] text/html $:/plugins/sobjornstad/TiddlyRemember/templates/TiddlyRememberParseable

LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': Unrecognized Unicode character "−" (8722) [unknownSymbol]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
LaTeX-incompatible input and strict mode is set to 'warn': In LaTeX, \\ or \newline does nothing in display mode [newLineInDisplayMode]
/usr/local/lib/node_modules/tiddlywiki/boot/boot.js:160
	var doc = options.document || document;
	                              ^

ReferenceError: document is not defined
    at Object.$tw.utils.domMaker (/usr/local/lib/node_modules/tiddlywiki/boot/boot.js:160:32)
    at DatePickerWidget.render ($:/plugins/kixam/datepicker/widget.datepicker.js:51:29)
    at VarsWidget.Widget.renderChildren ($:/core/modules/widgets/widget.js:393:15)
    at VarsWidget.render ($:/core/modules/widgets/vars.js:43:7)
    at MacroCallWidget.Widget.renderChildren ($:/core/modules/widgets/widget.js:393:15)
    at MacroCallWidget.render ($:/core/modules/widgets/macrocall.js:33:7)
    at SetWidget.Widget.renderChildren ($:/core/modules/widgets/widget.js:393:15)
    at SetWidget.render ($:/core/modules/widgets/set.js:33:7)
    at SetWidget.Widget.renderChildren ($:/core/modules/widgets/widget.js:393:15)
    at SetWidget.render ($:/core/modules/widgets/set.js:33:7)

Support backlink

Currently, link inside QA won't be discover by the backlink filter, so won't showup in any double link plugin. Is this addressable?

AttributeError: '_Collection' object has no attribute 'find_notes'`

Hello sobjornstad,
thanks a lot for this cool project!

However, when I am trying to execute the sync, I get the following error from the Anki Plugin:

Debuginformationen:
Anki 2.1.22 (0ecc189a) Python 3.8.1 Qt 5.14.1 PyQt 5.14.1
Platform: Linux
Flags: frz=True ao=True sv=1
Add-ons, last update check: 2020-06-01 14:55:24
Möglicherweise beteiligte Erweiterungen: ⁨TiddlyRemember⁩

Caught exception:
Traceback (most recent call last):
  File "/home/hel/.local/share/Anki2/addons21/60456529/__init__.py", line 166, in join_thread
    return self.sync()
  File "/home/hel/.local/share/Anki2/addons21/60456529/__init__.py", line 176, in sync
    userlog = ankisync.sync(self.notes, self.mw, self.conf)
  File "/home/hel/.local/share/Anki2/addons21/60456529/ankisync.py", line 104, in sync
    for nid in mw.col.find_notes(model_search))
AttributeError: '_Collection' object has no attribute 'find_notes'

I printed the mw.col object as a dir:

[   '__annotations__',
    '__class__',
    '__delattr__',
    '__dict__',
    '__dir__',
    '__doc__',
    '__eq__',
    '__format__',
    '__ge__',
    '__getattribute__',
    '__gt__',
    '__hash__',
    '__init__',
    '__init_subclass__',
    '__le__',
    '__lt__',
    '__module__',
    '__ne__',
    '__new__',
    '__reduce__',
    '__reduce_ex__',
    '__repr__',
    '__setattr__',
    '__sizeof__',
    '__str__',
    '__subclasshook__',
    '__weakref__',
    '_closeLog',
    '_debugLog',
    '_dueForDid',
    '_fieldData',
    '_lastSave',
    '_loadScheduler',
    '_logHnd',
    '_logRem',
    '_markOp',
    '_newCard',
    '_normalize_tags',
    '_openLog',
    '_remNotes',
    '_tmplsFromOrds',
    '_undo',
    '_undoOp',
    '_undoReview',
    '_usn',
    'addNote',
    'autosave',
    'backend',
    'basicCheck',
    'beforeUpload',
    'cardCount',
    'cardStats',
    'changeSchedulerVer',
    'clearUndo',
    'close',
    'conf',
    'crt',
    'db',
    'decks',
    'dty',
    'emptyCardReport',
    'emptyCids',
    'findCards',
    'findDupes',
    'findNotes',
    'findReplace',
    'findTemplates',
    'fixIntegrity',
    'flush',
    'genCards',
    'getCard',
    'getNote',
    'isEmpty',
    'load',
    'localOffset',
    'lock',
    'log',
    'ls',
    'markReview',
    'media',
    'mod',
    'modSchema',
    'models',
    'name',
    'newNote',
    'nextID',
    'noteCount',
    'optimize',
    'path',
    'previewCards',
    'remCards',
    'remNotes',
    'reopen',
    'reset',
    'rollback',
    'save',
    'sched',
    'schedVer',
    'schemaChanged',
    'scm',
    'server',
    'setMod',
    'setUserFlag',
    'startTimebox',
    'stats',
    'supportedSchedulerVersions',
    'tags',
    'timeboxReached',
    'tr',
    'undo',
    'undoName',
    'updateFieldCache',
    'usn',
    'weakref']

So, there exists a "findNotes" but not "find_notes". I dont know how this could have happend, because in the source-code I only find a "find_notes"-definition (but that seems to be something different).
When I change it to "findNotes" it works. Maybe "aqt.mw" is different in my version of Anki?

Offer more options for when to edit/delete

There may be some cases in which we don't want to edit notes that have already been synced to Anki, or don't want to update particular fields (someone wanted the ability to pull audio from AwesomeTTS after importing, for instance). We should have more options for choosing whether to update or delete existing notes.

Issues with Tiddlywiki 5.2 upgrade

I foolishly updated to the latest Tiddlywiki 5.2 and discovered that upon upgrade it appears that things have broken on Tiddlyremember. I'm using Nodejs on the server side and version 2.1.44 on the client-side (M1 Mac). I had no problems until I upgraded, but as far as I can tell nothing else but Tiddlyremember broke; which is terrible since this is the plugin I use daily.

Here's the error I get on the client-side:

Error
An error occurred. Please start Anki while holding down the shift key, which will temporarily disable the add-ons you have installed.
If the issue only occurs when add-ons are enabled, please use the Tools > Add-ons menu item to disable some add-ons and restart Anki, repeating until you discover the add-on that is causing the problem.
When you've discovered the add-on that is causing the problem, please report the issue on the add-on support site.
Debug info:
Anki 2.1.44 (b2b3275f) Python 3.8.6 Qt 5.14.2 PyQt 5.14.2
Platform: Mac 10.16
Flags: frz=True ao=True sv=2
Add-ons, last update check: 2021-10-26 12:10:20
Add-ons possibly involved: ⁨TiddlyRemember⁩

Caught exception:
Traceback (most recent call last):
  File "/Users/hyuan/Library/Application Support/Anki2/addons21/60456529/twimport.py", line 61, in _invoke_tw_command
    proc = subprocess.run(cmd, cwd=wiki_path, stdout=subprocess.PIPE,
  File "subprocess.py", line 512, in run
subprocess.CalledProcessError: Command '['/usr/local/bin/tiddlyremember', '--load', '/var/folders/36/rgts6_wd0559_p1z444ngh600000gn/T/tmp_lkbeydl/wiki.html', '--savewikifolder', '/var/folders/36/rgts6_wd0559_p1z444ngh600000gn/T/tmp_lkbeydl/wikifolder']' returned non-zero exit status 1.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Users/hyuan/Library/Application Support/Anki2/addons21/60456529/__init__.py", line 187, in join_thread
    if self.handle_thread_exception():
  File "/Users/hyuan/Library/Application Support/Anki2/addons21/60456529/__init__.py", line 175, in handle_thread_exception
    raise exc
  File "/Users/hyuan/Library/Application Support/Anki2/addons21/60456529/__init__.py", line 62, in run
    self.notes = twimport.find_notes(
  File "/Users/hyuan/Library/Application Support/Anki2/addons21/60456529/twimport.py", line 195, in find_notes
    _folderify_wiki(tw_binary, downloaded_file, wiki_folder)
  File "/Users/hyuan/Library/Application Support/Anki2/addons21/60456529/twimport.py", line 52, in _folderify_wiki
    _invoke_tw_command(cmd, None, "folderify wiki")
  File "/Users/hyuan/Library/Application Support/Anki2/addons21/60456529/twimport.py", line 72, in _invoke_tw_command
    raise RenderingError(
60456529.oops.RenderingError: Failed to folderify wiki: return code 1.
$ /usr/local/bin/tiddlyremember --load /var/folders/36/rgts6_wd0559_p1z444ngh600000gn/T/tmp_lkbeydl/wiki.html --savewikifolder /var/folders/36/rgts6_wd0559_p1z444ngh600000gn/T/tmp_lkbeydl/wikifolder

�[1;31mError: No tiddlers found in file "/var/folders/36/rgts6_wd0559_p1z444ngh600000gn/T/tmp_lkbeydl/wiki.html"�[0m

Allow disabling sync for a wiki?

If a wiki is temporarily not available for some reason (e.g., it's on the web and we're offline), it would be nice to be able to disable syncing to it temporarily without removing it, so that we aren't unable to sync other wikis in the meantime.

This is technically difficult because the "wiki" field on notes is not guaranteed to be correct: the user could change the name of a wiki and then disable it, and then we would have no idea which notes we should avoid removing.

Comments and Usage Questions

Saw this reposted to r/Anki, and wanted to share my thoughts. Feel free to close this and/or redirect me to where I should have posted this.

Get out of my brain, I was gonna make this 😉 Very nice stuff, I am glad to see a connection between two of my favourite applications. Thanks for your efforts!

Do you get use out of it? I am curious how many cards you manage using this method. For myself the unidirectional sync, and lack of support for custom note types makes me unable to use this properly.

What exactly is the use of the TiddlyWiki plugin? Just to setup the macro? Did you consider creating each Anki note as a Tiddler and search for them by tag using the TiddlyWiki API?

This is how I was planning (and still do) to implement TiddlyWiki as a import/export type in my weekend project Brain Brew. I probably won't get round to that for a month or so, as I have other tasks to do first, but the benefits would be bi-directional syncing, using any note type, into/from Csv or CrowdAnki. No direct Anki add-on though, but it is possible.

Anyways mate, good work 👍 I hope you and others get good use out of it. Hit me up if you want to chat Anki / TiddlyWiki syncing to death.

Support for mathjax `\(\)` and `\[\]`

I was wondering whether mathjax is supported or might be trivially implemented by for instance simply installing a mathjax tiddlywiki plugin. I couldn't find anything about this in the documentation.

[Feature request] Improve the flexibility and use of inline cloze deletions

Inline cloze deletions are terribly useful and I've been using them abundantly over the past months. I've tweaked a few things using shadow tiddlers and believe these changes could actually be useful for others:

  • Adding a shortcut specifically for inline cloze deletions, without having to manually add the extra "inline" argument, or giving the option to simply default to "inline" from plugin options.
  • Enabling easy change of the cloze-identifier (currently "{cloze:" and "}") to make them more discrete (I loved the default cloze-identifier initially, but now prefer simply using the coloured opening and closing braces).
  • Adding the option to hide the self-id of the inline cloze deletions as the display becomes quite unseemly when having more than one inline cloze deletions in a paragraph. This is easily done by changing the CSS with a display: none associated to the tr-selfidentification class though I guess there may be some trade-offs to this or you wouldn't have wanted this information displayed in the first place.

I'd gladly prepare a pull request for any or all of these if you believe they could make sense for a larger user base.

Better install instruction

I think I need to create a folder sobjornstad in the plugins folder first, then download zip of this repo, then extract it, and drag tw-plugin folder into sobjornstad folder, and rename tw-plugin to TiddlyRemember

截屏2021-03-22 下午1 01 46

MathJax for math formatting in Anki (plugin link in details)

Hi,

I thought you'd be interested because I was also looking into MathJax and saw a recent reply of yours. This formatting isn't exactly an issue in TiddlyRemember but I'm not sure where else to put it. Simply installing the online version of the MathJax plugin into the empty wiki file (not on Node JS) worked because the formatting showed, although there was one internal Javascript error:

Uncaught TypeError: Failed to execute 'observe' on 'MutationObserver': parameter 1 is not of type 'Node'.

I used a blank wiki file (not Node JS) and installed the plugin by dragging it in. I used another blank file without the MathJax plugin installed and it synced with Anki. Upon installing it and not using MathJax formatting, I got this error:


Anki 2.1.35 (84dcaa86) Python 3.8.0 Qt 5.14.2 PyQt 5.14.2
Platform: Windows 10
Flags: frz=True ao=True sv=1
Add-ons, last update check: 2020-10-10 21:45:18

Caught exception:
Traceback (most recent call last):
File "C:\Users\Aqua8\AppData\Roaming\Anki2\addons21\60456529\twimport.py", line 58, in _invoke_tw_command
proc = subprocess.run(cmd, cwd=wiki_path, stdout=subprocess.PIPE,
File "subprocess.py", line 512, in run
subprocess.CalledProcessError: Command '['C:\Users\Aqua8\AppData\Roaming\npm\tiddlywiki.cmd', '--output', 'C:\Users\Aqua8\AppData\Local\Temp\tmpihl0183i\render', '--render', '[tag[Anki]]', '[encodeuricomponent[]addsuffix[.html]]', 'text/html', '$:/plugins/sobjornstad/TiddlyRemember/templates/TiddlyRememberParseable']' returned non-zero exit status 1.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\Users\Aqua8\AppData\Roaming\Anki2\addons21\60456529_init_.py", line 142, in join_thread
raise self.extract_thread.exception
File "C:\Users\Aqua8\AppData\Roaming\Anki2\addons21\60456529_init_.py", line 60, in run
self.notes = twimport.find_notes(
File "C:\Users\Aqua8\AppData\Roaming\Anki2\addons21\60456529\twimport.py", line 188, in find_notes
render_wiki(tw_binary, wiki_folder, render_location, filter)
File "C:\Users\Aqua8\AppData\Roaming\Anki2\addons21\60456529\twimport.py", line 145, in _render_wiki
_invoke_tw_command(cmd, wiki_path, "render wiki")
File "C:\Users\Aqua8\AppData\Roaming\Anki2\addons21\60456529\twimport.py", line 69, in _invoke_tw_command
raise Exception(f"Failed to {description}: return code {proc.returncode}.\n"
Exception: Failed to render wiki: return code 1.
$ C:\Users\Aqua8\AppData\Roaming\npm\tiddlywiki.cmd --output C:\Users\Aqua8\AppData\Local\Temp\tmpihl0183i\render --render [tag[Anki]] [encodeuricomponent[]addsuffix[.html]] text/html $:/plugins/sobjornstad/TiddlyRemember/templates/TiddlyRememberParseable

�[1;31mError executing boot module $:/plugins/kantorsite/mathjax/init.js: {}

$:/plugins/kantorsite/mathjax/init.js:1
(function(){function e(e,t,n){var r=document.getElementsByTagName('head')[0]||document.documentElement;var i=document.createElement('script');if(typeof e=='function'){i[window.opera?'innerHTML':'text']='('+e.toString()+')()'}else if(typeof e=='string'){i.src=e}if(t){for(var s in t){if(t.hasOwnProperty(s)){i[s]=t[s]}}}var o=false;i.onload=i.onreadystatechange=function(){if(!o&&(!this.readyState||this.readyState=='loaded'||this.readyState=='complete')){o=true;i.onload=i.onreadystatechange=null;if(r&&i.parentNode){r.removeChild(i)}if(typeof n=='function'){n()}}};r.insertBefore(i,r.firstChild);return i}e(function(){MathJax.Hub.Config({tex2jax:{inlineMath:[['$','$'],['\(','\)']]}})},{type:'text/x-mathjax-config'});e('http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML',null,function(){e(function(){var e=window.MutationObserver||window.WebKitMutationObserver;if(!e){alert('MathJax plugin for TW5: Sorry, but current version of your browser is not supported!')}else{var t=new e(function(e,t){MathJax.Hub.Queue(['Typeset',MathJax.Hub])});var n=document.getElementsByClassName('story-river')[0];t.observe(n,{subtree:false,attributes:true,childList:true})}})})})()
^

ReferenceError: document is not defined
at e ($:/plugins/kantorsite/mathjax/init.js:1:37)
at $:/plugins/kantorsite/mathjax/init.js:1:607
at $:/plugins/kantorsite/mathjax/init.js:1:1193
at Script.runInContext (vm.js:130:18)
at Script.runInNewContext (vm.js:135:17)
at Object.runInNewContext (vm.js:302:38)
at Object.$tw.utils.evalSandboxed (C:\Users\Aqua8\AppData\Roaming\npm\node_modules\tiddlywiki\boot\boot.js:530:5)
at Object.$tw.modules.execute (C:\Users\Aqua8\AppData\Roaming\npm\node_modules\tiddlywiki\boot\boot.js:806:15)
at C:\Users\Aqua8\AppData\Roaming\npm\node_modules\tiddlywiki\boot\boot.js:846:30
at Object.$tw.utils.each (C:\Users\Aqua8\AppData\Roaming\npm\node_modules\tiddlywiki\boot\boot.js:135:12)�[0m


The latest snapshot from the Wayback Machine: https://web.archive.org/web/20200221224233/http://mathjax-tw5.kantorsite.net/

Also, I tried just leaving the filter as the default and there was still a sync error. Not sure if it was the same one though.

Support syncing some subset of formatting to Anki

We currently strip all HTML within macro parameters, but Anki supports HTML on cards, so this is not necessary, and the ability to preserve some formatting would be nice. The challenge will be stripping or updating things like internal links so that the Anki notes are not full of unusable junk.

"." Wiki Name Error

I skimmed the closed issues, but not sure if it was mentioned that a "." in the title causes a 'invalid "" name error' when syncing

e.g, for those using their TW's as a website (blah.com, blah.io, etc. etc.) and use the name in the config section of TiddlyRemember

Multiple occlusions in inline cloze do not sync

Syncing is not working for inline cloze deletion with multiple occlusions defined, like in this example:

<<remembercz "20200906204435482"
  "Platformy zdieľanej ekonomiky znižujú transakčné náklady na {c1::dohľadávanie}, {c2::dohadovanie} a {c3::dodržanie dohody}." inline>>

Without inline attribute, syncing works properly and three cards are created.

v1.2.0 bump in TW plugin

Thanks for the new release! You probably forgot to bump version in tw-plugin/plugin.info. Update cannot be done:

image

Feature requrest: Convert KaTeX delimiters to MathJax delimiters

In TiddlyWiki the official KaTeX plugin allows you to write Latex equations by surrounding them with the delimiter $$.

Anki uses the delimiters \( and \) to indicate MathJax, so I wonder if it would work to convert the delimiters on sync? This would mean that you could display math equations properly in both TW and Anki.

I have no idea if this is possible or appropriate, but I thought I'd suggest it.

Password isn't saved when editing the config of a wiki created from < 1.3.0

In _save_wiki_values(), we figure out what fields to save based on the current .keys() of the wiki config. This doesn't work correctly if we've added a new field to the schema since the config file was created, as the new fields in the config dialog will be skipped.

Better approach: extract the logic that builds the prototype in add_wiki() to a separate function and call said function to obtain the keys; this will ensure that any added values get created. Or get rid of using a prototype at all; I did this initially because the fields are already defined in config.json and I figured this should be kept DRY, but it might be less confusing / more reliable to leave the dictionary blank in config.json and define the structure in code, if there are going to be changes to the schema with any regularity at all.

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.