* Create server-sent-events.js
* Create sse-change-listener.js
* Implement server sent events
* Convert to ES5 and wrap in function
* Use the host string from tiddlyweb
* Improve comments in sse-server.js
* Can't use object reference as key
* Add retry timeout
* Fix a bug
* bug fix
* Fix formatting
* Fix ES5 compat
* capitalize comments
* more fixes
* Refactor tiddlywek/sse-server.js
* Extract helper functions for handling wikis and connections.
* Replace JSDoc comments.
* Fix formatting according to TW core.
* Simplify the logic for adding and removing connections.
* Fix formatting of tiddlyweb/sse-client.js
Fix formatting according to TW core.
* Fix formatting of server-sent-events.js
Fix formatting and comments following TW core guidelines.
* Extract a debounce function in sse-client.js
* Avoid using startsWith in server-sent-events.js
startsWith is part of ES2015, while TiddlyWiki uses the 5.1 dialect.
* New sse-enabled WebServer parameter
* If not set to "yes", disabled SSE request handling.
* Add documentation for the parameter in core/language/en-GB/Help/listen.tid
* Add new tiddler editions/tw5.com/tiddlers/webserver/WebServer Parameter_ sse-enabled.tid
* Disable polling for changes if SSE is enabled
* Add sse_enabled to /status JSON response
* Store syncer polling status in $:/config/SyncDisablePolling
* Handled disabling polling in core/modules/syncer.js
* Simply boolean logic in syncer.js
* Delete trailing whitespaces in syncer.js
Co-authored-by: Arlen22 <arlenbee@gmail.com>
* jasmine: specify 'after' only in Node
The commands module is never executed in browsers and the 'after'
constraint caused a regression where tests were never run in the
browser.
* jasmine: give the startup module a name like all others
* Make tag for menubar-contents dropdown configurable
* Make tag for menubar-contents dropdown configurable
* Make tag for menubar-contents dropdown configurable
* Rename variables to better convey what they're about
* Refactor comments so that they make more sense
* In Node.js, call the wrapper's execute function
The function sets up callbacks necessary for
exiting the process with the appropriate exit code.
https://github.com/jasmine/jasmine-npm/blob/v3.4.0/lib/jasmine.js#L235
* No need to configure the default reporter manually
The .execute() function does it
* Add note on which path comes from which npm package
* Note that other properties of the process object are referenced too
* add a new-line before the log text to increase readability of the test output
* make eslint, jslint happy
* it shouldn't be there
* fremove this file from my PRs
* add a new-line before the log text to increase readability of the test output
* make eslint, jslint happy
* it shouldn't be there
* fremove this file from my PRs
* add a new-line before the log text to increase readability of the test output
* make eslint, jslint happy
* it shouldn't be there
* fremove this file from my PRs
* add a new-line before the log text to increase readability of the test output
* make eslint, jslint happy
* it shouldn't be there
* fremove this file from my PRs
* add a new-line before the log text to increase readability of the test output
* make eslint, jslint happy
* it shouldn't be there
* fremove this file from my PRs
* add a new-line before the log text to increase readability of the test output
* make eslint, jslint happy
* it shouldn't be there
* fremove this file from my PRs
* add a new-line before the log text to increase readability of the test output
* make eslint, jslint happy
* it shouldn't be there
* fremove this file from my PRs
* add a new-line before the log text to increase readability of the test output
* make eslint, jslint happy
* it shouldn't be there
* fremove this file from my PRs
* Improve the plugin description field to make the dataflow more obvious
* add a new-line before the log text to increase readability of the test output
* make eslint, jslint happy
* it shouldn't be there
* fremove this file from my PRs
* add a new-line before the log text to increase readability of the test output
* make eslint, jslint happy
* it shouldn't be there
* fremove this file from my PRs
* fix issue #4750 add plugin-priority of 10 to tiddlyweb plugin.
Block the raw widget unless consent has been granted. This is helpful because the tw2parser generates <$raw> widgets for content embedded with <html>, and thus this blocks YouTube embeds.
* Corrected issue with markdowns softbreaks
It wasn't respecting the $:/config/markdown/breaks setting.
It was effectively always "true".
Also, no more errors when encountering hardbreaks.
* Corrected introduced md bug
Made it so after each md type, accumulated text may be flushed.
* Changed convertNodes to use switch statement
It's faster, less text, easier to read, and now debuggers don't play
duck-duck-goose with every if-else block.
* whitespace text is no longer forgotten
* Fixed issue with text after md pattern and \n
* Add pathPrefix to state, and options to request handler
* use ternary operator instead of default empty object
* Fix styling issues
* Update server.js
* Add boot to server and filesystem adapter
* add a new-line before the log text to increase readability of the test output
* make eslint, jslint happy
* it shouldn't be there
* fremove this file from my PRs
* fix high CPU load
* use dependents in codemirror-autocomplete
* add dependents to codemirror-mode-htmlmixed
* add dependents to sublime keymap
* add dependents to vim keymap
* add dependents to htmlmixed mode
* add dependents to htmlembedded mode
* add dependents to markdown mode
* fix typo in markdown-mode
* fix typo in codemirror-mode-htmlembedded
* fix typo in codemirror-keymap-sublime
* fix typo in codemirror-keymap-vim
* fix typo in codemirror-mode-htmlembedded
* fix typo in codemirror-mode-markdown
* Adds a name to the core plugin
* Make plugin listings consistently show "name: description"
* Make plugin listings consistently sort by title (thus grouping publishers)
* Add a missing plugin name
See discussion here: https://github.com/Jermolene/TiddlyWiki5/pull/4508#issuecomment-609671970
* First commit
* Add throttling of saves
Now we refuse to save a tiddler more often than once per second.
* Wait for a timeout before trying again after an error
* Modest optimisations of isDirty() method
* Synchronise system tiddlers and deletions from the server
Fixes two long-standing issues:
* Changes to system tiddlers are not synchronised from the server to the browser
* Deletions of tiddlers on the server are not propagated to browser clients
* Make sure we update the dirty status even if there isn't a task to perform
* Replace save-wiki button with popup sync menu
* Remove the "Server" control panel tab
We don't need it with the enhanced sync dropdown
* Add indentation to the save-wiki button
* Fix spacing in dropdown menu items
* Switch between cloud icons according to dirty status
* Add a menu item to copy syncer logs to the clipboard
* Improve animated icon
* Remove indentation from save-wiki button
@pmario the annoying thing is that using `\trim whitespace` trims significant whitespace too, so it means we have to use <$text text=" "/> when we need a space that won't be trimmed. For the moment, I've removed the indentation but will keep thinking about it.
* Further icon, UI and copy text tweaks
Move the icons and styles from the core into the TiddlyWeb plugin
* Clean up PR diff
* Tweak animation durations
* Break the actions from the syncer dropdown into separate tiddlers
@pmario I think this makes things a bit easier to follow
* Refactor syncadaptor creation and logging
The goal is for the syncadaptor to be able to log to the same logger as the syncer, so that the "copy syncer logs to clipboard" data is more useful.
* Don't transition the dirty indicator container colour, just the SVG's colour
* Only trigger a sync for changes to tiddlers we're interested in
Otherwise it is triggered by the creation of the alert tiddlers used to display errors.
* Restore deleting local tiddlers removed from the server
(I had commented it out for some testing and accidentally commited it).
* Guard against missing adaptor info
* We still need to trigger a timeout when there was no task to process
* Avoid repeatedly polling for changes
Instead we only trigger a timeout call at if there is a pending task (ie a tiddler that has changed but isn't yet old enough to save).
* Lazy loading: include skinny versions of lazily loaded tiddlers in the index.html
* Introduce _is_skinny field for indicating that a tiddler is subject to lazy loading
* Remove savetrail plugin from prerelease
It doesn't yet work with the new syncer
* Make the savetrail plugin work again
* Clear outstanding alerts when synchronisation is restored
* Logger: only remove alerts from the same component
Missed off 9f5c0de07
* Make the saving throttle interval configurable (#4385)
After switching Bob to use the core syncer the throttle interval makes saving feel very sluggish compared to the message queue setup that I had before.
The editing lock that I use to prevent conflicts with multiple users doesn't go away until the save is completed, and with the 1 second delay it means that if you edit a tiddler and save it than you have to wait one second before you can edit it again.
* Tweaks to appearance of alerts
* Exclude temp tiddlers from offline snapshots
Otherwise alerts will persist
* Tweak appearance of status line in dropdown
* Update release note
* Web server: Don't include full path in error messages
Fixes#3724
* In change event handler check for deletions
* Disable the official plugin library when the tiddlyweb plugin is loaded
* Hide error details from browser for /files/ route
See https://github.com/Jermolene/TiddlyWiki5/issues/3724#issuecomment-565702492 -- thanks @pmario
* Revert all the changes to the relationship between the syncer and the syncadaptor
Previously we had some major rearrangements to make it possible for the syncadaptor to route it's logging to the logger used by the syncer. The motivation is so that the "copy logs to clipboard" button is more useful.
On reflection, changing the interface this drastically is undesirable from a backwards compatibility perspective, so I'm going to investigate other ways to achieve the logger sharing
* Make the tiddlyweb adaptor use the syncer's logger
So that both are availavble when copying the syncer logs to the clipboard
* Update release note
* Support setting port=0 to get an OS assigned port
Quite useful
* Update code comment
* UI: Use "Get latest changes from server" instead of "Refresh"
* Add getUpdatedTiddlers() method to syncadaptor API
See https://github.com/Jermolene/TiddlyWiki5/pull/4373#issuecomment-573579495
* Refactor revision handling within the syncer
Thanks @pmario
* Fix typo in tiddlywebadaptor
* Improve presentation of errors
See https://github.com/Jermolene/TiddlyWiki5/pull/4373#issuecomment-573695267
* Add docs for getTiddlerRevision()
* Remove unused error animation
* Update comment for GET /recipes/default/tiddlers/tiddlers.json
* Optimise SVG cloud image
* Add optional list of allowed filters for get all tiddlers route
An attempt to address @Arlen22's concern here:
https://github.com/Jermolene/TiddlyWiki5/pull/4373#pullrequestreview-342146190
* Fix network error alert text translatability
* Fix error code and logging for GET /recipes/default/tiddlers/tiddlers.json
Thanks @Arlen22
* Flip GET /recipes/default/tiddlers/tiddlers.json allowed filter handling to be secure by default
* Validate updates received from getUpdatedTiddlers()
* Add syncer method to force loading of a tiddler from the server
* Remove the release note update to remove the merge conflict
* Fix crash when there's no config section in the tiddlywiki.info file
* Use config tiddler title to check filter query (merge into fix-syncer) (#4478)
* Use config tiddler title to check filter query
* Create config-tiddlers-filter.tid
* Add config switch to enable all filters on GET /recipes/default/tiddlers/tiddlers.json
And update docs
* Fix bug when deleting a tiddler with a shadow
Reported by @kookma at https://github.com/Jermolene/TiddlyWiki5/pull/4373#issuecomment-604027528
Co-authored-by: jed <inmysocks@fastmail.com>
Co-authored-by: Arlen22 <arlenbee@gmail.com>
* process.exit() only exist in a node.js environment
* updateInterval has been removed from upstream
From upstream commit:
b6eb9a4d5e
* Update Jasmine to 3.4.0
* Reuse the evalInContext helper
* Fix expected parse result to match the actual result
* 'describe' cannot be nested inside 'it' blocks
Jasmine started to explicitly raise an error in these cases since:
https://github.com/jasmine/jasmine/pull/1411
* Be consistent about how to refer to library files
* Update link to Jasmine's official website
"Sub-plugins" are displayed within the dropdown of their parent plugin.
This is a more elaborate version of #4109. It doesn't address dependent plugins (yet), this is just about grouping addon plugins under their parent.
* Pass pathFilters as an array
Otherwise, when we try to iterate over pathFilters in the filesystem
utils module, we end up iterating over each character in the filter
string, which ends up generating 'Filter error_ Missing [ in filter
expression.tid' as the tiddler's filename
Fixes GH #4173
* Allow for multiple path filters to be specified
...via $:/config/FileSystemPaths, split by newlines
Fixes#3875
* Use .json files (instead of .tid) for any tiddler whose fields contain values that can't be stored as a .tid file
* Save application/json tiddlers as .json files
* Refactor most of the file handling as re-usable utilities
* update highlight.js to latest release v9.13.1
* update to v9.13.1 default.css
does the current default.css include adjustments for the different languages?
* Update highlight.pack.js
* Update readme.tid
* update highlight.pack to 9.15.6
* update version number + included languages
* add smartIndent config to codemirror
* add indentWithTabs config to codemirror
* make default tabSize same value as indentUnit
* make tab and enter do smart indentation
Previously, we were only using the path to disambiguate files on a file:// URI. That meant that all wikis on tiddlywiki.com was sharing the same pool of local storage...
From the readme:
This plugin enables TiddlyWiki to embed a modified copy of itself (an "innerwiki"). The primary motivation is to be able to produce screenshot illustrations that are automatically up-to-date with the appearance of TiddlyWiki as it changes over time, or to produce the same screenshot in different languages
It turns out that we don't need to disable any scroll anchoring done by the browser as our implementation of scroll anchoring will adapt itself.
Also removing an unneeded paragraph tag from the view template.
* Create howto.tid
Howto explains customising the languages supported by the highlight plugin. This involves:
* Using the highlight.js download page to get a zip archive containing the files for a highlight.js server which supports a set of languages selected by the user
* Replacing the highlight plugin's `highlight.pack.js` file with the `highlight.pack.js` file from the downloaded archive
* Update plugin.info
Add howto.
* fix for #3547
see https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
because of "strict mode" - the `parentNode` property may not be writable and causes an error in `fakedom.js` (appendChild)
to reproduce: install CodeMirror, install "Tools for exploring internals of TW", open a heavy Tiddler like the Control-Panel in edit-mode, toggle preview on, switch to "parse tree" or "widget tree"
* check for tw fakedom
* use "text" config scheme
* use "text" config scheme
* use "text" config scheme
* use "text" config scheme
* use "text" config scheme
* use "text" config scheme
* use "text" config scheme
* use "text" config scheme
* use "text" config scheme + set type integer
* use "text" config scheme
* set type integer
* set type integer
AWS imposes a limit of 16MB in my testing for the payload of a lambda. Compressing it enables us to pass x2-3 more data, thanks to the inefficiencies of JSON
this reverts #3070 which prevents dragging text from one codemirror instance to another
there are other ways to solve the issue I tried to solve with this, so we should revert this to the standard behavior
As proposed in #3378
* Experimental support for comments on the entire wiki (enable in the plugin config panel). Implemented as comments on $:/SiteTitle, with the comments appearing at the top of the story river
* Refactor the "add comment" button actions so that they can be reused
* Refactor the comment toolbar to be extensible via a system tag
* Add an $:/AdvancedSearch canned filter for accessing all comments
* Module-ize server routes and add static file support (#2510)
* Refactor server routes to modules
New module type: serverroute
Caveats: Loading order is not deterministic but this would only matter
if two route modules attempted to use the same path regexp (that would
be silly).
* Add static assets plugin
This plugin allows the node server to fetch static assets in the /assets
directory. I felt that this was a feature that goes above the core
functionality. That is why I added it as a plugin. with the modular
route extensions this was a breeze.
* Add serverroute description to ModuleTypes
* Coding standards tweaks
* Fix filename typo
* Move support for attachments from a plugin into the core
* Missing "else"
* Refactor server handling
* Introduce a new named parameter scheme for commands
* Move the SimpleServer class into it's own module
* Deprecate the --server command because of the unwieldy syntax
* Add a new --listen command using the new syntax
For example:
tiddlywiki mywiki --listen host:0.0.0.0 port:8090
* Add check for unknown parameters
* Add support for multiple basic authentication credentials in a CSV file
Beware: Passwords are stored in plain text. If that's a problem, use an authenticating proxy and the trusted header authentication approach.
* Refactor module locations
* Rename "serverroute" module type to "route"
* Remove support for verifying optional named command parameters
The idea was to be able to flag unknown parameter names, but requiring a command to pre-specify all the parameter names makes it harder for (say) the listen command to be extensible so that plugins can add new optional parameters that they handle. (This is particularly in the context of work in progress to encapsulate authenticators into their own modules).
* Refactor the two authenticators into separate modules and add support for authorization
* Correct mistaken path.join vs. path.resolve
See https://stackoverflow.com/a/39836259
* Docs for the named command parameters
I'd be grateful if anyone with sufficient Windows experience could confirm that the note about double quotes in "NamedCommandParameters" is correct.
* Be consistent about lower case parameter names
* Do the right thing when we have a username but no password
With a username parameter but no password parameter we'll attribute edits to that username, but not require authentication.
* Remove obsolete code
* Add support for requiring authentication without restricting the username
* Refactor authorization checks
* Return read_only status in /status response
* Fix two code typos
* Add basic support for detecting readonly status and avoiding write errors
We now have syncadaptors returning readonly status and avoid attempting to write to the server if it's going to fail
* Add readonly-styles
We hide editing-related buttons in read only mode
I've made this part of the tiddlyweb plugin but I think a case could be made for putting it into the core.
* Add custom request header as CSRF mitigation
By default we require the header X-Requested-With to be set to TiddlyWiki. Can be overriden by setting csrfdisable to "yes"
See https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet#Protecting_REST_Services:_Use_of_Custom_Request_Headers
* Add support for HTTPS
* First pass at a route for serving rendered tiddlers
cc @Drakor
* Tweaks to the single tiddler static view
Adding a simple sidebar
* Switch to "dash" separated parameter names
* Typo
* Docs: Update ServerCommand and ListenCommand
* First pass at docs for the new web server stuff
Writing the docs is turning out to be quite an undertaking, much harder than writing the code!
* Get rid of extraneous paragraphs in static renderings
* Rejig anonymous user handling
Now we can support wikis that are read-only for anonymous access, but allow a user to login for read/write access.
* More docs
Slowly getting there...
* Static tiddler rendering: Fix HTML content in page title
* Docs updates
* Fix server command parameter names
Missed off 30ce7ea
* Docs: Missing quotes
* Avoid inadvertent dependency on Node.js > v9.6.0
The listenOptions parameter of the plain HTTP version of CreateServer was only introduced in v9.6.0
cc @Drakor @pmario
* Typo
* Update codemirror.js
* Update xml-fold.js
* Update javascript.js
* Update markdown.js
* Update readme.tid
* add tiddlywiki theme to codemirror demo
* set tiddlywiki theme for codemirror demo
* correct naming of meta to tw-meta
* vim keymap updates were missing - now added
* Create swipe.js
* add swipe widget
* add popup handling
* velocity mini-tweak
* add press widget
* add tap widget
* remove popup from tap widget - not possible as it seems
* add pan widget + utility css
* correcting field name
* naming and formatting
* add usage
* add pinch widget
* add pinch widget
* various small fixes
* adding absolute coordinates to pan widget
* prevent default dragging for pan widget
* improve pan widget stability
* try adding data-dynaview-unset-tiddler
I obviously lied
* dynaview unset functionality when scrolling out of view
* additional undefined check
* Update docs.tid
* update true and false to "true" and "false"
* add example of unset functionality
* Update reveal-on-scroll.tid
* v5.35.1
* codemirror 5.35.1
* v5.35.1
* v5.35.1
* v5.35.1
* v5.35.1
* v5.35.1
* adding search&replace and autocomplete
* update version number
* add jump-to-line.js required for search&replace
* adding show-hint.js required by autocomplete
* adding basic autocomplete for any word
* adding autocomplete css
* adding new files to tiddlywiki.files
* forgot adding search.js
* minify 'em all
* Delete vim.js
* Delete sublime.js
* Delete emacs.js
* Delete anyword-hint.js
* Delete show-hint.css
* Delete show-hint.js
* Update config.tid
* Update tiddlywiki.files
* Update tiddlywiki.files
* Update config.tid
* Update config.tid
* Update config.tid
* Delete dialog.js
* Delete dialog.css
* Delete jump-to-line.js
* Delete search.js
* Delete searchcursor.js
* Update tiddlywiki.files
* Update tiddlywiki.files
* Update tiddlywiki.files
* add search-and-replace cm-addon as plugin
* add autocomplete cm-addon as plugin
* add fullscreen-editing cm-addon as plugin
* add keymaps as plugins + cleanup
* add highlighting modes as plugins
* small update on usage.tid
* moved multiplex.js to htmlembedded mode - the only one using it
* config/CodeMirror update
* how to disable line numbers
* how to change CM theme
* add closebrackets and closetags addons
* packaging a base-addon
* move meta.js from codemirror to base addon
* inputStyle: textarea -> prevents contenteditable on mobile browsers, keeps focus when clicking toolbar buttons, prevents import on paste
* default config no line numbers
* temporary add panel plugin for demo
* put base-plugin back to codemirror editor
* searchcursor to searchnreplace plugin
* bad copypasta mistake
* another typo
* stripped down meta.js + moved matchbrackets to closebrackets plugin
* remove panel
* change module-type to codemirro and make init "require" dynamic.
* make config handling dynamic with sensible defaults
* make cm settings translateable
* delete multids. they will be replaced
* add auto-config tiddlers
* dynamically create config structure for CM
* fix filename
* change typo
* kitchensink config, plus change plugin description for better sorting.
* add matchBrackets config tiddler
* RIP codeblock
* removed install instructions from readme - codemirror usage tiddler still todo
* control panel settings for cm base
* add setting for auto-close tags
* adding fontfamily settings and theme settings
* change tags for settings from $:/tags/ControlPanel/Settings to $:/tags/ControlPanel/Settings/CodeMirror
* more usage info
* more usage info
* update to v5.36.0
* ugly hack enables highlighting and tag-closing for vnd.tiddlywiki and x-tiddlywiki
* disable auto-indent for vnd.tiddlywiki & x-tiddlywiki and add some hidden settings
* remove engine.js hack
* meta.js -> tw-meta.js
* codemirror settings tab
* rename tiddler to tw-meta.js
* make editor font monospace or sans-serif - dropdown select
* make editor font monospace or sans-serif - dropdown select
* now using correct tiddler for editor font setting
* better usage doc
* make markdown-mode require tw-meta
* add more themes info
* add active-line highlighting option
* mini usage change
* add integer type to engine.js config-getter
* blink rate config type string
* correct engine.js
* license for base-plugin, usage link in settings tab
* codemirrordemo hellothere update
* codemirrordemo hellothere update
* Update license.tid
* codemirror demo sidebarlayout, license
* license headers to addon files
* license formatting & forgot what year we have
* license formatting & forgot what year we have & codemirror demo sitetitle sitesubtitle
* more informations 'try-this-style' for codemirrordemo hellothere
* codemirror demo sitetitle & cm fontfamily
* hellothere
* font-family setting must be editor-font-family, not code-font-family
* add basic keyboard shortcuts table
* shortcuts change to not interfere with toolbar shortcuts - needs testing - vim and emacs todo
* formatting
* controlpanel change keymap - default keymap is default
* ctrl-T becomes Alt-T in default keymap
* adjustments for codemirror demo
* demo: hellothere - hint for sidebar keymap cheatsheet
* toolbar focus fix + remove console log
* engine.js cleanup
* formatting
* reverting focus fix
* indenting engine.js
* hoping that indenting gets better
A mechanism to choose the optimum font size of a passage of text to yield a particular numbr of characters per line.
@BurningTreeC I've made some minor consistency tweaks and cleanups to the viewport stuff, too.
* add KaTeX logo
* add katex stamp button
* add katex stamp dropdown
* add a snippet so that the dropdown isn't empty
* correct dropdown title
* change tag
* update snippets tag
Fixes https://github.com/Jermolene/TiddlyDesktop/issues/124 (the problem over there is that TiddlyWiki running as a wiki folder in TiddlyDesktop reports itself as running both under Node and the browser, and the previous test was wrongly choosing the fakedom)
* In the interests of performance and expressiveness, switched to using a Sax parser instead of a DOM implementation.
* Use extensible declarative rules to control the slicing process
* Added new optional set of rules for slicing by heading, where the paragraphs underneath a heading are packed into the same tiddler as the heading
* Added a modal dialogue for specifying parameters when slicing in the browser
This plugin provides support for importing tiddlers as external attachments -- it only works on platforms such as TiddlyDesktop that provide the required "path" property with imported files.
Using the plugin means that instead of importing binary files as self-contained tiddlers, they are imported as "skinny" tiddlers that reference the original file via the ''_canonical_uri'' field. This reduces the size of the wiki and thus improves performance. However, it does mean that the wiki is no longer fully self-contained