Commit Graph

7798 Commits (11878bb9d402989c6ecffff65c40968c6d50dfb7)

Author SHA1 Message Date
yflory 99004428d5 Enable the read-only mode in Cryptpoll
yflory 47e8be1681 Remove the IMPORT button and editor toolbars in read-only mode
ansuz f29e3d7b0d don't let notifications interfere with document titles
ansuz a9e2ca8d72 make tests green again
yflory 83705ae058 Improve the UI in read-only mode
ansuz e6785b4dad push /pad/ state once ready to avoid OT collision
ansuz 723df4880e Merge branch 'slides' into merge-slides
ansuz b96f050555 Merge branch 'board' into merge-boards
ansuz fa8199bc75 don't try to use experimental user code
ansuz 2d42cadb23 push /code/ state once ready to avoid OT collision
ansuz bf5dac58dd Merge branch 'titleUserDoc' of github.com:xwiki-labs/cryptpad into titleUserDoc
Yann Flory bf8c9a2c4b Add a button to get the read only URL
Yann Flory 99b50465c7 Add the read-only mode for /pad and /code
Yann Flory 42f14873cd Merge branch 'translations' into newhashmerge
Yann Flory 391b7690e6 Set the pad to readonly mode when using a 'view' url
Yann Flory 368e253c9f Ability to send a read-only URL
Yann Flory 6363d3fb90 Pad titles are now shared with the userdoc
yflory 5c63585952 Complete the French translation
yflory 0d9f63b977 Merge branch 'translations' - part one
yflory f086492e50 Improve the localization system
Improve and enable the French translation
ansuz cc4bca8004 execute callbacks on presentation events
ansuz 8bf79ef915 serialize slide pads as a sorted object
ansuz 997b46a3f7 limit the size of rendered images
yflory 25c8d16bf5 Use a new version-prefixed hash parser
ansuz c35c7cda20 hide wizard after computing results
ansuz 0dae949c4f fix scrolljank bug
yflory c736caceba Use a better default pad title
ansuz 97415d8158 Merge branch 'users'
ansuz 122a9fe068 realtime kanban board
ansuz 4561ddcdf3 add missing semicolon
ansuz 8031770f90 rename "module" to "APP" in /slide/ for jshint
ansuz 8e86be81b2 Merge branch 'better-slides'
ansuz fb21b4e46b fix up /render/
ansuz 4941c1493e better user integration. a few more common utils
ansuz 2f2aeef0e5 add missing semicolon
ansuz 8a659cf887 maintain aspect ratio for slides
display index and slide count in title
ansuz 30ea1b59b7 integrate users into common utilities
ansuz 6d775f61c6 add missing functions
ansuz 168338b898 add missing functions
ansuz 7c5ee53e81 resolve conflict and merge
ansuz f47a6f1cbb Merge branch 'master' of github.com:xwiki-labs/cryptpad
ansuz f40b798d88 Merge pull request from xwiki-labs/reconnect
Ability to reconnect after a connection failure
yflory c168ce2d1c Ability to reconnect after a connection failure
ansuz e386749e89 unlock the editor after your name has been set (or not)
ansuz aa91ebd24e don't initialize until the store is ready
ansuz 93f5a3d3e9 use more bits from the users' seed and parse into various subkeys
ansuz 1bec02239c coerce dates into strings
ansuz 0add01a940 remove dead code
ansuz dcebb9597f prototype of password based key derivation
ansuz 848f16e8f5 unused function which computes values for the table
ansuz 18ea61dc9a use diffdom for sanitation and better redraws
ansuz c62d064ee9 add a 'share' button which copies the url to the clipboard
ansuz b229a18ccf notify users of changes if the visibility api is supported
ansuz d64e06c12e don't make empty options
ansuz a3f6fe8843 lock options by default
add edit button for modifying options
fix bug where committing didn't clear the active column
minor style fixes
ansuz 8c914dfe1f better filenames
ansuz f1619f4a0f get /slide/ up to par with other prototypes
* use messages.js for some translatable elements
* style alerts
* infer document name from content
* present, forget, rename, import, and export buttons
ansuz 269eba3c47 remove commit button if a user is removed
ansuz f8f66800d1 display a 'commit' button which locks your column
ansuz 85540bad12 leave all columns locked unless you've visited before
ansuz d679cac666 fewer log statements for the console
ansuz 55b1a17b0d off by one error
ansuz 235c0482f9 increase clickable area around editable columns' checkboxes
ansuz c76aaac542 don't make columns with empty names
ansuz d85684ef74 usability improvements
only one column is editable at a time
editable columns have a different appearance from locked columns
any column can be edited by anyone via an edit button
columns and rows require confirmation before deletion
ansuz 76bfb6ab35 detect whether you are new to a page
prompt for your name and create a column for your username
prompt before deleting columns as well
style a few elements differently
ansuz e2b162bf6d snapshot some dead code
ansuz 55666e9f70 remember presentations, and label them correctly on the home page
ansuz 5a3da11c40 very simple presentation with markdown
ansuz 7eaa4ce733 recognize pads with the same type and hash as identical no matter their domain
ansuz da6e5d73d0 fix undefined reference
ansuz 043041523f on import, fall back to setting language from file extension
ansuz deb63d2447 share syntax highlighting selection with peers
ansuz 2d5caf38d9 show a spinner until the document has loaded
ansuz fd0a7337a3 wait a full minute until requirejs times out
ansuz 975bff5794 show a spinner until the document has loaded
ansuz a58f58535b better regex for pulling titles out of c-like comments
ansuz 5131f47cca jshint compliance
ansuz 306d524416 fix broken removal call
ansuz dd3a5d47be migrate localStorage so people go to cryptpad.fr
ansuz a094e3c02e use correct store api calls in frame.js
also don't log unnecessarily
ansuz dcc9810a42 avoid extra call to store if there are no keys to remove
ansuz 9a5294016d fix incorrect usage of store api
ansuz 4e5f381325 add spinner to API. update bower deps
ansuz 01d9923e15 export Cryptpad at window level
ansuz fa654a7646 slightly better regex
ansuz 254d800a3b add a /p/ route so that we don't break old urls
ansuz cd18075ac7 add some redirection logic to support old hash types
ansuz 600f3151e9 don't use the store until it's ready to be used
ansuz fffa9acf15 remove unused files from fs and jshintignore
ansuz 551d38c930 let the abstraction take care of stringification
ansuz 9b16d529ca add one more missing script that caused handlebar highlighting to break
ansuz 0ada6a3d0a jshint compliance. gotta keep those tests green
ansuz 1f24d7126c big ugly commit that will be really hard to audit
This changeset applies new styles to the poll.

it also uses the new asynchronous wrappers around the localStorage api.
this is necessary because we're migrating to a storage system that will
use an async api.

The changes to the poll just happened to coincide with the async stuff.

My apologies to anyone who wants to read this whole thing
ansuz 7f02c899ea add snippet for copying text to the clipboard
ansuz 93142b364f tests for pretty printed html
ansuz 4833cf0d7b add a fontpicker
ansuz 6cb2f72aa6 pretty print html during export if possible
ansuz c09166efe2 scroll down when adding a new option to the table
ansuz 42eafe9e29 don't create duplicate stylesheets in the document head
ansuz fe3f02f5e0 enable text foreground and background colors
ansuz 68f8d0101d fix flash of unstyled content
ansuz 8ea6c03094 notify user on disconnect
also disable inputs
ansuz efd190beca export file with correct file extension, if possible
ansuz 5e71a5473c add another missing script
ansuz 992bc4f449 add missing script
ansuz 2351d8a23e make tests green again
ansuz 068a3f5944 remove rows from the poll
ansuz c6bdb7506d forget everything about a pad when you forget it
ansuz b8a3a4d188 persist usernames across sessions via localStorage
ansuz 846d1135b9 set mode in the editor, not just the dropdown
ansuz 446266a79b remember the last language used on a particular pad
ansuz e84fbf0bc3 more helpers in common
ansuz 70f8837681 maintain scroll position on remote changes
ansuz c267dd6a88 ensure that 'text' is a string
ansuz 2f2ab4392c clear the table on user clicks
ansuz 64f030c344 add a clear table button
ansuz d2c5cfe646 add col/row ids to arrays
ansuz 1a63faf188 infer names from the first comment on code pad
ansuz f77e2cec34 set text values of new options
ansuz 52ab5147c9 add a missing semicolon so tests don't fail
ansuz e3f4df7e0a push my latest changes because I'm agile
ansuz cde239c97a implement row/column removal
ansuz 9860b7427a addition signs are slightly informative
ansuz ac50bf7286 height and width of the table are unreliable because of multiple users. remove them
ansuz a3254a2619 consistent ordering of columns and rows
ansuz d30eddf2f2 ui hint for 'adduser' and 'addoption'
ansuz a995f2306d fix undefined variable reference
ansuz 44fe95c76b add titles to buttons on pad and code
ansuz ebf5c27453 add rename and forget buttons to poll app
ansuz f7a1332317 add a 'back' button
ansuz 7dd1624206 commit polls to localStorage
ansuz 0cf5f3cc87 realtime polls!
ansuz ff74a67a09 translate alertify button messages
ansuz d39ab5c250 point to the actual translation file
ansuz dea8e225db fix double scrollbar issue
ansuz 6f598682f8 templates for custom themes
ansuz 02cd2fbee0 style fixes for the ansuz theme
ansuz c9edf69ed1 one less prototype using messages.js while we figure out internationalization
ansuz 3eccec7054 better effort for translation
ansuz 3bdfee71e1 move padrtc to .git
ansuz 18ce69b756 use constants from toolbar.js, address linter warnings
ansuz 2a7a84b774 use constants exported from toolbar for selections
make things a little less brittle
address linter warnings
ansuz cbeaa8d609 major refactoring for toolbar. CAN HAZ LESS
ansuz 7504f79e05 add log and warn methods to cryptpad common
ansuz 750731d3db workaround for favicon magic
ansuz 3ad5d71ab1 make sure the regular favicon is set
ansuz fd3cd73d0b try to fix favicon bug
ansuz 589b0087a1 listen for keyup events while alertify prompts are active
ansuz a2a8570453 use alertify UI in /pad/
ansuz e32c0aaac8 use alertify UI in /code/
ansuz deae7ac78f don't hide the notification until it has been seen
ansuz 3d3c6e4800 add wrappers for alertifyjs
ansuz 85702f2706 inform users of changes in /pad/ too
ansuz 1ae212af44 let users know when changes have occurred while tabs lack focus
ansuz 6075849ed7 add favicons to /pad/ and /code/
ansuz 73d2b6561a add small modules for page visibility api and notification apis
ansuz 7e8d66a141 filter unwanted elements when receiving patches
ansuz d8b467422a fix default title in localStorage migration
ansuz 7a5877d12a don't filter pads after 30 days
ansuz d844551fba add a forget button. clean up toolbar a bit
ansuz 8a82e11306 make sure title is defined for home page usage
ansuz 71b1f71ba0 fix migration to include ctime
ansuz 7da58a0de9 improve pad naming UX, slight refactoring
* prevent naming conflicts
* migrate localestorage to use named attributes
* use ctime and atime
* display default names in table
* sort pads by most recent atime
* move more functions into cryptpad common
* change table styles
ansuz ec0dba3f7c correct undefined reference
ansuz a3da10766a add rename button to /code/ and /pad/
ansuz 93dcf29c15 more functions for working with localstorage
ansuz 93fed83a08 remove annoying border around editor
ansuz 23788bca67 add 'ansuz' theme because I'm horribly vain
ansuz 22929fd3f5 add title attributes for dropdown menus
ansuz 8b1a2b7b8b commit theme choices to localStorage
ansuz fb2ca04c34 add a theme selector
ansuz dc8e36bf20 move themes directly into ./code/
ansuz 908e79c0b9 add autolink plugin
ansuz d025d13295 address some jshint complaints
ansuz 12bbf3e8f6 don't drop values onto the window
ansuz ca45e3533d pass loaded file to callback when importing
ansuz 5b79775810 infer modes from MIME types
ansuz df99395b4d fix a few more paths that I missed
ansuz b3deb9531d fix paths that I broke when updating codemirror
ansuz 82a9b05d5f upgrade to newest codemirror
ansuz 1a5905d9fd more work on highlighting modes in codemirror
* style the select menu
* add more modes
* preset language selection to 'javascript'
* don't prompt the user with a silly hash when changing their name
ansuz a89511985f add _really_ basic multilanguage support. I'll come back for css later
ansuz 31aa09d6f6 work a bit more on import/export and code highlighting
ansuz 242c9a99e3 implement import and export in /pad/
ansuz 1526c26f8e remember code and wysiwyg pads
ansuz 0a8137e7eb move rememberPad to cryptpad common and simplify it a bit
ansuz 849683d586 update to use new style crypto module
ansuz f94c06abc0 drop a bunch of stuff and use diff dom and hyperjson
ansuz 69f3f4c9a8 drop hyperscript dependency
ansuz f607fcc0ad test using newest hyperjson. forget hyperscript
ansuz c3d2568d3c add file export for codepad
addresses 
ansuz 920dbeabd1 add a save button
ansuz 4cc5388c76 trial run of canvas export via filesaver.js
ansuz f818d873bb remove usernames, refactor a wee bit
ansuz 2b8c21d292 set styles with setAttribute. fixes style fights
ansuz 36baf498ce fix magicline filter and strange interaction with cursor
ansuz 303e8d6c3e remove debugging line
ansuz 8af49698da add a class to the magicline markup so it's easier to remove
ansuz 48d222e565 depend on listmap api from bower
ansuz 1746a4e732 use crypto from bower
ansuz 2a3ff256b9 remove libraries which are now in bower
ansuz f72cb24fc5 rm LORIA
ansuz 2c3de49922 remove realtime-input, since it's in bower now
ansuz beba78d7f8 update prototype dependencies
ansuz 2798d1b1f9 all of the list/map api's dependencies are now on bower
ansuz 58c968b319 minor cleanup in realtime-input
ansuz 288b4d5b66 depend on main passing in the crypto module for now
ansuz f76dc615c0 use chainpad-crypto from bower and pass it into the listmap api
ansuz 85dbd5cb6e pass in websocketURL from main
ansuz d9a4f2f22c missed one
ansuz cf2866baa7 use json-ot from bower for tests
ansuz 5bb77bd50c add UI.add and UI.remove methods.
also use json-ot from bower
ansuz ff0f7d15dc use json-ot from bower
ansuz dccf5e8dcf use listmap api from common/
ansuz 58633af943 listmap can be reused. put it in common/
ansuz f80e9772a8 merge api.js and deep-proxy.js into one file
ansuz dbf1e2b870 support reusing the netflux network
export more internals from realtime input
ansuz 6f7543e9cc demonstrate chaining of 'on' directives
ansuz e44446f71e proper recursive proxy initialization
ansuz 68cec2348a don't prompt the user with a crypto hash for their name
ansuz 83696495a8 use chainpad from bower, not local
ansuz 2b9ac14cb1 restructure main to take advantage of new callback infrastructure
ansuz fea74782a2 remove a little more dead code that I missed
ansuz a58d6c745a implement remaining listeners and factor
* 'isProxyable' helper
* 'find' helper
* 'lengthDescending' helper (for sorting change/remove events by path length)
* implement recursive proxy creation
* implement recursive proxy removal
* implement 'bubbling' prevention (via return false)
* implement create, ready, and disconnect event handlers
* return 'this' from 'on'
* trim dead code
ansuz 4222c0b516 simplify api
* refactor conditional with DeepProxy helpers
* don't call 'onRemote' until fully initialized
* use disconnect, ready, and create handlers on proxy object
ansuz 954ee26f4d fix undefined disconnect reason
ansuz a0ec5eada8 better fix for magicline filter
ansuz 9336c4de5c import latest chainpad
ansuz d0b553d198 port Yann's multiple-select implementation to cryptpad
ansuz e3b8a10959 fix magicline filter
ansuz 058548b95a revert my reversion
Revert "Revert "Added checkpoints with the new code from ChainPad""

This reverts commit 6e2e8bf21f.
ansuz 6e2e8bf21f Revert "Added checkpoints with the new code from ChainPad"
This reverts commit da2bfe2de9.
ansuz 599f5aeec8 add sample listeners for debugging
ansuz 3afd144562 don't make noise when adding a listener
ansuz e86a3567be more minor bugfixes and general improvements
off by one error in deletion loop (and undefined references)
sort listeners by pattern specificity
deletions are changes (for now)
ansuz ce99bd9ba3 Merge branch 'two' of github.com:xwiki-labs/cryptpad into two
ansuz 7c63219add fix some minor bugs
ansuz a0c73c95d8 do away with a bit of boilerplate
ansuz e189092ba8 document/spec the listmap api in its current/intended form
ansuz 55846044e1 rewrite underlying API. implement listeners
Caleb James DeLisle da2bfe2de9 Added checkpoints with the new code from ChainPad
ansuz 014dce272b working on better abstractions. still held together with duct tape
ansuz c1bca09cce move list/map functionality into wrapper file
ansuz f61d06fa18 first commit for listmap prototype
ansuz 774d349ec3 ignore hidden elements and submit buttons
ansuz cf85de6113 remove old bencoding code
ansuz d99bb8ff84 WIP : fallback to old parsing doesn't work
ansuz f04be53d11 fall back to old parsing if the message is bencoded?
ansuz 976a08cc7a move to chainpad version 2
ansuz 297d8c2d44 reformat code for jshint compliance
ansuz baf523e9a5 add new functionality from xwiki development
ansuz 0c89443c1b fix typo
ansuz 39fcd7dc4c more specific filtering for magicline plugin
to avoid false positives for other things which are non-contenteditable spans
ansuz cae750cd75 update padrtc for to use bower libraries
ansuz ad3c53c344 use textpatcher from bower for all pads
ansuz 0cd4f85ff0 remove migration notes
ansuz a7cbd8c470 we're pushing json over the wire, so let's use json-ot.validate
ansuz 3ea270acb9 fix cursors in form prototype
ansuz d2c8fbf1f8 use hyperjson.amd.js, not hyperjson.js
ansuz 663c157e2a expose text patcher to the window via APP
ansuz 1769ca16dc add example for configuring the logLevel in /pad/
ansuz 7faf57602b implement log level settings from application layer
ansuz 523aff3067 use upstream chainpad.js
ansuz dcd130cd9d use hyperjson from bower in padrtc
ansuz c752e4a6e5 remove sharejs
ansuz 6b2e986789 remove deprecated textsocket library
ansuz d2fa5e8f70 start using hyperjson from bower.io
ansuz 150ebaba7b add ability to force text diffing
ansuz aef6f3a85b lock codemirror editor until chain has synced
ansuz 6736335db2 add 'made with <3' toolbar to code
ansuz 506a703b7d turn off TextPatcher logging on /pad/
ansuz ba17b78f7a restyle name change button
ansuz d79b3616c9 remove unused files
ansuz 4c84758265 disable textpatcher logging
ansuz 46b009d20f remove last non-netflux pad
ansuz 18e0131d6e Merge branch 'migrate' of github.com:xwiki-labs/cryptpad into beta
ansuz 32d1807350 import unused functions from /p/, to be integrated later
Yann Flory 492054a938 Fix the cursor position when a remote patch is applied
ansuz 626ecaffcd log browser fights in /pad/
Yann Flory 5bb2e12db2 Merge branch 'beta' into migrate
ansuz afe78dad56 Merge branch 'netflux' into beta
Yann Flory cc51e6d6ed Update CodeMirror pad to work with Netflux
ansuz a735d63306 migrate markdown rendering 'pad' to netflux
Yann Flory f5f8f6e1eb Remove the delay between a change and its propagation to chainpad
ansuz fa6914037c start rewriting codepad to use realtime-input
ansuz 2852c8f594 Merge branch 'netflux' of github.com:xwiki-labs/cryptpad into beta
Yann Flory fe3bb4da27 Merge branch 'netflux' of github.com:xwiki-labs/cryptpad into netflux
Yann Flory 53b2644b64 Fix a issue with fights over usernames
Caleb James DeLisle 3b6fe44378 Merge branch 'beta' of github.com:xwiki-labs/cryptpad into beta
ansuz 255dc17a5d Merge branch 'beta' into netflux
ansuz f9de1c9e1f Merge branch 'beta' of github.com:xwiki-labs/cryptpad into beta
ansuz c14b86d84a add missing semicolon
ansuz b3ef2abb84 fix jshint complain
Yann Flory 85d5f5c47f Convert netflux to es5
Yann Flory c0b8aac792 Fix an issue where metadata could be duplicated in the realtime userdoc
ansuz 22cf18f78c Merge branch 'beta' of github.com:xwiki-labs/cryptpad into beta
ansuz c509c28c18 realtime form prototype, almost in good condition
ansuz 1a9e7299fc working state
ansuz 69e8f54e8f pass in Crypto to realtime-input
Caleb James DeLisle 5f16ad4a58 Update to most recent chainpad
ansuz aa07dd31ee have json-ot initialize its own debug module, instead of relying on a window variable's existence
Yann Flory d3203d1c2a Remove Crypto from the modules loaded with RequireJS in realtime-input
It now has to be passed in the config in the main JS file
Yann Flory 8ac69ca262 Add a missing "time" property in the netflux client causing incorrect
timeout errors
ansuz be1ef7abe3 migrate canvas to netflux
ansuz d4943511fe move text/ and hack/ to Netflux
ansuz 4c95602347 remove a little bit more dead code
ansuz b140b6429d remove a little bit of dead code
ansuz 2c6cf9883b stop using deleted file
ansuz bbdc9da853 delete duplicated file
ansuz cce50390a0 don't depend on library to set hash
ansuz 5f4825f3a0 don't change the hash from realtime input
let applications handle that logic
ansuz 80fb5e1e21 don't rely on RealtimeSocket exporting textPatcher
ansuz 4f426651ad remove TextPatcher from RealtimeTextSocket
ansuz a527024a8c start on realtime form prototype
ansuz 02ff1a63a4 Merge branch 'netflux' into beta
Conflicts:
	www/assert/main.js
ansuz 04f6299938 reconcile differences with netflux
ansuz 565fb1d186 include small snippets for preventing browser fights
ansuz ffbd428b87 better logging of browser fights
ansuz 4d44661f3b more correct tests
ansuz a18c793f98 use latest hyperjson
ansuz 980ff8a0ca Fix a test that was failing on chrome
it failed for reasons which are irrelevant to our application
ansuz 9efcc443cd add 'format' to TextPatcher's API
ansuz 0769e50414 move TextPatcher to highest application layer
ansuz 1d70335228 provide all callbacks before starting
ansuz 9498937b43 add a FIXME to the assert page
tests were failing (unnecessarily) on Chrome
ansuz a3787ee4dc Merge branch 'netflux' into beta
ansuz 06b464c524 move sheet/ to .git
ansuz cdf02ac725 remove input pad
ansuz 11961b4f1d export stringifyDOM to REALTIME_MODULE
ansuz 5db487db3f remove old pad entirely
hyperjson version is considered a strict improvement
ansuz 010566d3c3 pushDelta was mistakenly deprecated. restored.
ansuz 1639c5b099 use hyperscript and hyperjson from common
ansuz 3598c93098 move new hyperjson into common
ansuz 103bb69daa move custom hyperscript into common
ansuz e357549eda push browser fights into an array for inspection
ansuz b83fb7b823 improve brFix logic
stop exporting functions which we wish to deprecate
ansuz 1c7954ed51 Grab Fabric off of the window
ansuz 06786b6e02 Remove redundant declaration
ansuz df22c246c4 serialize text nodes correctly
ansuz 7ca5f47d02 remove multitest pad since it offers no significant benefit
ansuz bafdd588dd fix /hack/ to not require sharejs textarea
ansuz f2db6b83eb better sizing for palette options
ansuz 5ce158d2e2 add more colors
ansuz 7c4b334ad3 here's a canvas app!
ansuz 41276fffb5 repair /text/ application, conform to new API
ansuz cb979844f6 implement text patching at application layer
ansuz 4a41575e6d accept onLocal in config
ansuz d3c2c901b6 implement cursor transformation in a common library
ansuz 92d89f6cac start to factor sharejs into two modules
ansuz 13dc77b7f6 remove commented line
ansuz 41e635b2e5 realtime-input.js : turn on logging
Yann Flory 69e8e18283 Remove the pipe character in the hash
ansuz d62e9fc1c9 add a missing semicolon
ansuz 4095201d15 Merge branch 'netflux' of github.com:xwiki-labs/cryptpad into integrate
Yann Flory c32045d7d0 Fix an issue with missing characters when several users were typing at the same time
ansuz 822b2bd2b9 Merge branch 'netflux' of github.com:xwiki-labs/cryptpad into integrate
Yann Flory be09a1808d Remove old code from realtime-input
ansuz 5a5b9ad718 Merge branch 'netflux' into beta
ansuz 4af987a2a2 point to correct toolbar.js
ansuz 3ade46adc7 Merge branch 'newtests' into beta
Yann Flory 6884b0890a Fix the typong tests not working properly
ansuz b12a01e08f report test results on the page, not in the console
ansuz feaae609ad fix broken path for padrtc
Yann Flory ecc41d14af Use canonical serializer for json serialization
ansuz fc77ef66b3 Merge remote-tracking branch 'origin/sortify' into HEAD
utilize canonical stringify function

Conflicts:
	www/_socket/main.js
Caleb James DeLisle 319f5b95f7 Use canonical serializer for json serialization
Yann Flory 9683fd9aec Always serialize the DOM in one way.
Caleb James DeLisle 698338b49a Use canonical serializer for json serialization
Yann Flory e207d8b579 Merge branch 'diffdom' into netflux
ansuz 468827dadd newest tests
ansuz c867ab04ab rename /_socket/ app to /p/
ansuz a1fe941f69 Always serialize the DOM in one way.
ansuz f4c5b2a996 Add sane defaults to TextPatcher diffs
ansuz 259772dd62 Turn on TextPatcher logging for _socket
ansuz 0537c28919 Add switchable logging to TextPatcher.js
Caleb James DeLisle 8a36963582 Enable ChainPad PARANOIA mode but remove the part which causes most slowness
ansuz 284da6a4e9 minor improvements I made to the /hack/ pad last night
ansuz 9f0cc4ed64 update hack with a slightly better UI
ansuz 71c0a06c3b Merge branch 'hack' into diffdom
ansuz 19cd991dba trim dead code, comment, very minor optimizations
ansuz f75c246029 remove dead code from pad/main.js
ansuz 9f45ccb2d9 use console.error for stack traces
ansuz d705b947ab Merge branch 'diffdom' into netflux
basic cleanup while performing a larger merge between two prototypes
ansuz 2ffa69dc15 remove checks for a non-existent race condition
ansuz 368d72b337 add missing semicolons to TextPatcher.js
ansuz 851ccfbdb6 detect falsey operations in OT and ignore them
ansuz 400f6efde1 json-ot.js : jshint compliance
ansuz a0999d1d2b add a comment about why hashes are being stubbed
ansuz ca94d30386 detect falsey operations in OT and ignore them
ansuz 9f9cd8d8cd realtime-input.js : fixes for jshint compliance
ansuz 793149a608 json-ot.js : jshint compliance
ansuz 06a3b63923 jshint compliance for toolbar.js
ansuz 3b8238ef3b add missing semicolons to pad/main.js
jshint compliance
ansuz 5cead3fad3 add missing semicolons to TextPatcher.js
ansuz e6ab03164c import TypingTests.js and expose at the console
RTWYSIWYG-54
> implement tests for components of the WYSIWYG editor
ansuz 94e57e4a26 update location of text-patcher.js
ansuz b37dab1f49 Merge branch 'diffdom' into netflux
Simple cleanup and unit tests
ansuz a07774e81a Implement tests for serialization
ensure that complex DOM elements can serialize and deserialize without modifications

RTWYSIWYG-54
> implement tests for components of the WYSIWYG editor
ansuz 6bb37aed44 main.js : support tab insertion in /hack/ pad
ansuz 6b9d982d40 stabilize _socket/realtime-input.js
...as common/RealtimeTextSocket.js
ansuz 1a22592afa remove unused modules from realtime-input.js
ansuz 39071021eb stabilize typingTest.js as /common/TypingTests.js
ansuz 9805958ad7 stabilize text-patcher.js into /common/TextPatcher.js
ansuz 2c34833d2c break text-patcher's functionality into components
text-patcher.js now exports diff, patch, log, and apply change
in addition to the previous 'create' method.
ansuz 7782069dbd Merge pull request from xwiki-labs/diffdom
merge diffdom into netflux
ansuz a1f9b10175 remove offending line from chainpad entirely
RTCHAINPAD-3
ansuz 4071a3aa25 revert to using the chainpad in /common/
now that we have found the problem that caused the backspace bug
we don't need a special chainpad for testing.
ansuz 4ba68eb2bf fix leaky variable in chainpad
Patch.transform declared a 'toTransform' variable without using 'var'
this caused it to leak onto the window during operational transformations
ansuz 05108efdfa correct chainpad's transformation function
addresses RTCHAINPAD-3

Pending further testing, this change will still need
to be corrected in https://github.com/xwiki-contrib/chainpad/
Yann Flory 360fee9feb Fix a new cursor error with Codepad
Yann Flory c2e0dded3a Fix an issue with the cursor sometimes disappearing when a patch was received
Update CodeMirror to the latest version (5.13.2)
Yann Flory 713c90242b Hide the usernames when they have not been changed
Yann Flory c53baab99d Update Codepad with the latest improvements
Yann Flory 0b3d6e15b8 Replace the Netflux old client (netflux.js) by the Netflux2 client.
Move the WebRTC peer-to-peer use case in /padrtc, which still uses the old
Netflux client
Use es6-promises.min.js to solve a issue with some browser and the new
Netflux client
ansuz cd357a9136 turn an alert into a console.error
ansuz ec64e0d381 use getAttribute to inspect document elements
el.getAttribute('attr') is more reliable than el[attr].
ansuz f5b0e1a5df Add comments, debug variables. initialize better
Expose Hyperscript via window.REALTIME_MODULE

Make sure to pass in a JSON.parse'able initial state.

Add comments detailing the problems with not using setAttribute
ansuz 842b9d4243 Generalize _socket/realtime-input.js a little more
Anything JSON related should be at the application layer
Yann Flory cf9f60bd57 The server don't send back anymore messages to their sender
Yann Flory eb4ea7a6b0 Remove the content from the ACK messages sent by the server
Yann Flory ba4faea939 Update the pads to run with the latest improvements to the websocket server
Yann Flory 5ef7e29a9b Add the latest changes from _socket into the netflux pad
ansuz b59a14c5ac merge hyperjson changes from realtime xwiki
more resilient class serialization.
comments
ansuz 2691d85582 use forked chainpad with assertions for _socket
Yann Flory b41f0e8c50 Merge branch 'cjd-fixed-it-with-hax' into netflux2
ansuz c50690349b comments describing the role of each argument
ansuz df78d284c4 initial state should be valid JSON so JSON parse doesn't fail
ansuz 96e03fcfa4 Use latest chainpad without mutations
ansuz d5772c6315 when json-ot produces json that fails to parse...
export the relevant data to a window variable so we can inspect it better
ansuz aaf7c777cc add debugging info to the textPatcher
* kill dead code
* add assertions
* better logging for insertions and removals
ansuz 523df40d09 Debugging concurrent typing:
track whether there are local operations in progress, such that we can tell
whether a remote change is interrupting the DOM's conversion to hjson.
ansuz e446a3645c don't send funny BR attributes over the wire. Properly initialize the typing test
ansuz 22290590cb don't rely on window scope in typingTest.js
ansuz 772ca5d30e comment out debugging line
ansuz 6c340a6527 chainpad testing = true, reject non-compliant messages
ansuz afa1104d85 Pull the cursor out of bogus BR tarpits when it gets stuck
ansuz bac0e0ff88 implement hyperjson filtering
ansuz e51635c4bb fix index error
ansuz 3aebf7d2c2 minor changes to pass linting
ansuz 29e24f556c kill another window variable
ansuz e699073d45 attempt to preserve the magic line plugin while someone else is typing
ansuz 941f5361ea forgot to add 'typingTest', which main depends on
ansuz d852c578d8 removed dead code
ansuz 5591aae8fa Clean up main file
* convert.js includes the vdom library, which we aren't using anymore
  - removed, and replaced with the simple functions from Hyperjson and Hyperscript
* removed several variables that had been exported to 'window'
* moved the testing functions out into their own file for easier reuse
* restructured realtime initialization to be more compact
ansuz 478ccbf984 revert changes to chainpad
ansuz e3b78e20de Merge branch 'cjd-fixed-it-with-hax' of github.com:xwiki-labs/cryptpad into cjd-fixed-it-with-hax
ansuz e26246178f start to clean up and give things more sensible names.
get rid of the textarea entirely
Caleb James DeLisle b372b0b77c small change to chainpad in order to make it more likely to fail if the authDoc goes into the wrong state
Caleb James DeLisle f3fb674504 Merge branch 'cjd-fixed-it-with-hax' of github.com:xwiki-labs/cryptpad into cjd-fixed-it-with-hax
Caleb James DeLisle 98c85cef8b xxx
ansuz 12dcbc9121 fix quick red fox and make test.cancel work again
Caleb James DeLisle 62eabbc7ae If a message does not match parent hash, don't delete it from storage
Caleb James DeLisle dbf31798d5 json-ot triggering PARANOIA errors in ChainPad
Caleb James DeLisle 03932d0169 small changes to chainpad for testing
Caleb James DeLisle 669bcc1935 If there is a difference in the hjson then send a message back
Caleb James DeLisle f62ec85a4c Shuffled around some assertions and logs
Caleb James DeLisle 420a7098a6 more testing and crap
ansuz 4b35a145e3 Push WIP
ansuz 42c972116b leave TODO re: diffDOM and magicline
Hyperjson guarantees that magicline elements are not sent across the wire.
DiffDOM must guarantee that magicline elements will not be removed on remote edits.
ansuz e066730b68 add notes about how hyperjson is to be used
ansuz cd462ed872 Merge legacy websocket version
ansuz c047d5310f implement optional filtering in hyperjson
Implemented via callback, return falsey if you want to filter an element
and all of its children from the serialized result.

Conflicts:
	www/common/convert.js
ansuz 0d33af773f implement optional filtering in hyperjson
Implemented via callback, return falsey if you want to filter an element
and all of its children from the serialized result.
ansuz 475ca9bea8 hyperjson.js : used split instead of filter... oops
ansuz 1bd5cb9e27 hyperjson.js : used split instead of filter... oops
ansuz b2753ef7b7 fix string manipulation off-by-one
ansuz f98fda7604 fix string manipulation off-by-one
ansuz 4f3fcb08a4 better error reporting when the operational transform fails to parse JSON
ansuz 0ff4906f0e implement better serialization of class names
RTWYSIWYG-27 : poorly formed yet valid HTML caused hyperjson to produce element
               selectors which hyperscript could not parse.
ansuz fbe6225681 Don't attempt to use the cursor selection when it has length 0
RTWYSIWYG-20
RTWYSIWYG-24
ansuz 0c6222b5f9 better error reporting when the operational transform fails to parse JSON
ansuz 79a9998b13 implement better serialization of class names
RTWYSIWYG-27 : poorly formed yet valid HTML caused hyperjson to produce element
               selectors which hyperscript could not parse.
ansuz bd24821c6c Don't attempt to use the cursor selection when it has length 0
RTWYSIWYG-20
RTWYSIWYG-24
Yann Flory de6db0285c Limit the size of the usernames to 32 chars
Yann Flory 38d797a4f1 Fix issue with Chrome and WebRTC
Yann Flory 7237c751d5 Move 'vdom' to the main 'pad'.
Hide the right-hand panel (can de bisplayed with a 'debug' button)
Hide the IDs of users if they don't change their name
Yann Flory e77d85bc82 Trigger an onReady() method when the user's pad is fully synced (the history is loaded)
Yann Flory eca4ec699c Ability to change the username (the user ID is displayed by default)
Yann Flory 6e50ae94dd Remove unused code
Yann Flory 5da8560e22 Fix the user list in the toolbar keeping old data with the WebSocket server
Chainpad is no longer responsible for the userlist or the ping
Yann Flory 3a188625e0 Improve the detection of a disconnected peer to update the user list with the WebRTC service
Yann Flory 77e7fb5724 Fix an issue with the WebRTC service where it was impossible to join a channel once someone had left this channel
Yann Flory 06e5c84702 Clean some code
Yann Flory 29033f344c Merge branch 'netflux' of github.com:xwiki-labs/cryptpad into netflux
Yann Flory b1e8bcddef Fix the user list not working with the WebRTC service and causing major issues
Yann Flory c576241104 Add a Chainpad adapter to make Chainpad know the userList
ansuz fb0e82931d correct malformed json
Yann Flory ae8f6f7f2c Ability to choose which protocol to use (Websocket or WebRTC) with Netflux
ansuz 3a7af63c54 correct malformed json
Yann Flory b7885eb539 Fix channel history
ansuz 136e2d8cf2 pass in missing textarea argument so textpad starts working again
ansuz 8258018c1d Revert "fix undefined reference"
This reverts commit 7d65540123.

To restore functionality in convert.js
ansuz c67451bc1a Revert "remove broken functions from convert module"
Because I forgot that the /render/ page was still using vdom

This reverts commit 93fb944e1f.
Yann Flory c536ecbc1c Temp commit
Yann Flory 870b2dbb7e Add the WebRTC server in Cryptpad
Yann Flory c4f62fb812 First try with WebRTC
Yann Flory 09a06a8bc5 Replace the chainpad server by the netflux server
Yann Flory 60c3aceb0d Add chatflux server
Yann Flory deb2084fc5 Add the socket connection checker
ansuz d3e2a2f52e make verbose logging switchable via a conditional
ansuz 1c54af69a1 update minor editors to use new realtime-input api
ansuz 9b228eea6b modify vdom main.js to adhere to new realtime-input api
ansuz fefb904261 realtime input changes
ansuz fd99dba4a3 modify realtime-input api to take a single object as configuration. merge netflux API
Yann Flory 62ba579d4a Add Netflux API with WebSocket service V1
ansuz 53d3e475f7 ui hints for hackpad
ansuz d2f4fbcee9 fail the toolbar from the application layer
ansuz d7b34cf6be don't call toolbar from within realtime-input.js
ansuz e8469ae1bb test out extended realtime-input api
ansuz 5e1566eaec fix incomplete 'onAbort' block
ansuz 52fe892bae invert logical relationship with flag
otherwise updates don't actually propogate
ansuz 938df2b92f lock the editor until the chain has synced
add 'onAbort' hook. lock the editor if the connection fails.
ansuz 1d6ccc99a1 add 'onAbort' hook to realtime-input.js
ansuz e5bef52850 reintroduce the toolbar
ansuz 6ff5b10486 remove local diffDOM version
ansuz 93fb944e1f remove broken functions from convert module
ansuz 7d65540123 fix undefined reference
ansuz c246adc57b Lock contenteditable until chain is done syncing.
Don't bother patching the dom until the chain has synced
ansuz 1c0074258c go back to using diffDOM from bower
The latest version is required. You'll need to update.
ansuz 79bd82a62e main.js : integrate with patched diffDOM
ansuz 6884fabda9 Use local diffDOM instead of bower_components
At least until the PR gets accepted
ansuz f5a8727254 remove some unused functions from cursor.js
ansuz db1515c445 cursor.js : commit before cleaning up
ansuz 7e367e770e resize vdom debug panel to 30% width
ansuz 91ada5ce7a export Operation from chainpad. for use with OT
ansuz 5425699f43 check if possible parent exists before checking if it contains another element
ansuz 67bdb8a65a fix a bad regex that occasionally threw an error
'nothing to repeat'
ansuz e87a4599a4 main.js : tiny patch until things are working correctly.
ansuz 9ce59c985f only do stuff with the cursor when a remote edit takes place
ansuz 39f56d4fd1 throw error when checking for the index of a node that has no parent.
it probably isn't in the dom if this is the case.
Check if it's there before using this function
ansuz de46be85ba add better helpers for finding and resetting the cursor
ansuz 7e7f1fee76 include abstracted json-ot, add comments, start to use cursor stuff
ansuz c09036bd29 snapshot cursor.js, as some things are working quite well now
ansuz 4eee1f5210 add orderOfNodes function to tree library
ansuz 7689151fc0 pull json validation for OT into its own module for reuse
ansuz fbb9163e42 main.js : clean up and commit before making big-ish changes for cursor fixing
ansuz 2c8a2406c6 cursor.js : snapshot before code deletion
ansuz 1beb3f5355 snapshot of treesome.js before deletion
ansuz 8ead5ca129 realtime-input.js : add notes regarding integration of the netflux api
ansuz 3cb94b8d80 jshint compliance
ansuz d1885fbab6 better jshint compliance for common files
ansuz 539cc3a2fa remove unused files from common directory
ansuz afa2811472 remove local version of marked.js, prefer bower version
ansuz 587f95b6d7 don't overflow
ansuz a01331cb9a hide styling textarea no matter what
ansuz a600ece5c5 fix jshint complaints in common directory
ansuz 4a05a859e6 fix initialization routines
ansuz f1915d3b7c fix jshint complaints in pad directory
ansuz fe3917c0f1 fix jshint complaints in codemirror directory
ansuz 2c5a2b6023 remove unused code, add todos, fix minor errors
ansuz c5ab5dfe26 realtime style editor with lorum ipsum
ansuz 967d636df9 address more jshint complaints
ansuz f6c848385f hyperjson.js : jshint complains about var index in for loop
ansuz 0fbbb51f7f drop this useless line
ansuz d1dd497457 html-patcher.js : add missing semicolon
ansuz 62ea172ff4 errorbox.js : add missing semicolon so jshint doesn't complain
ansuz 3b5c932252 jshint ignore eval line
ansuz 7f92abc7bf Merge branch 'diffdom' of github.com:xwiki-labs/cryptpad into demoEffect
Caleb James DeLisle a7da21ccba Remove the cursor treatment
Caleb James DeLisle 86c4a69a97 Switch to patching with DiffDOM for testing :D
ansuz 653ba33b65 Merge branch 'vdom' of github.com:xwiki-labs/cryptpad into demoEffect
Caleb James DeLisle 2031191261 testing=false
Caleb James DeLisle 37db31b09e Attempt an operational transformation and if the result is not valid JSON then fail
Caleb James DeLisle e16299b5c4 Revert "restub OT until it's verified"
This reverts commit 350c9e6c76.
ansuz c22269e36e cursor.js : make the console a little less noisy
ansuz 350c9e6c76 restub OT until it's verified
ansuz 99a23154b7 files for unstubbing OT
ansuz c740c0ec92 add stuff for walking the tree
ansuz ad184b1114 add stuff to recover the cursor
ansuz 1aea11bb30 describe all the prototypes which are available
ansuz 9b13fd8f34 pull cursor correction code out of main.js
put it in cursor.js
ansuz 3b0ac3af4c More sensible styles
respond to viewport size
don't use gigantic font
ansuz b43674eb53 switch back to two-panel layout
ansuz f33e061c9a visit /hack/ to see what this is
I'll leave it up to the users to decide
whether XSS is a bug or a feature
ansuz 019750bea8 realtime-input.js : callback onInit if exists
ansuz 61fbf81dcd factor out rainbow stuff into rainbow.js
ansuz 7102a0a164 make rainbows
ansuz aa3880f442 up to date
ansuz d2f6c63d8a realtime-input.js : changed the api and left an undefined reference. fixed
ansuz 150c9a300d scale viewport so mobile is readable
ansuz d96124229b clean up realtime-input.js, break API
use an object for configuration, so as to be more extensible.
modify applications which use the API to match.
ansuz e43b9715e8 remove /md/ prototype
use /text/ and /render/ instead.
ansuz 64cc177a60 remove vmd directory
it was only a prototype, and only contained code which was no longer useful
ansuz e220113e98 fix the 'crapstorm' bug
ansuz ed03a48092 minor patches that make things a bit more reliable, still some bugs
ansuz ac0f7852fc committing latest changes for review
ansuz 2016550e01 virtual-dom.js : identify problem area?
ansuz 08fb010627 give 'onChange' a name
ansuz b52327be49 restyle /text/ page
ansuz 266e5eccce change styles for rendered page
ansuz 2adfeaaaaa test having multiple textareas in one page
ansuz 3cffdc982f remove unused functions from render/main.js
better comments
ansuz 317abf36f3 make rendered images sort of responsive
ansuz 388c6de64a minor style tweaks for /render/
ansuz ec172b6d21 rendered html should be scrollable
ansuz a484b920e3 disallow resizing of textarea
ansuz d9d4abb9a5 don't let the textarea overflow the body
ansuz dcbbeea734 solarized dark color scheme in /text/
ansuz c2eb29b75e fix typo
ansuz fd1e5d5735 better styling on render page
now solarized dark
ansuz a718f89e08 make a new pad that doesn't allow input.
It simply renders markdown that's being written in the same channel
but in another editor that allows input.
ansuz 2e3b424a1a sanitize markdown before rendering to prevent XSS
draw rainbox borders on element redraws in vdom method.
This lets us see what being redrawn, as the vdom.diff method
is breaking a few things.
ansuz 13f5371199 remove duplicated files
ansuz aa6bbabc62 prototype a vdom-based markdown editor
avoid unnecessary redraws.

discover a bug, apparently vdom replaces all child elements after an
element which was modified.

As such, changing b in [a, b, c, d] causes b, c, and d to be redrawn.
This is undesirable.
ansuz d14e42fedd start on a vdom-based wysiwyg realtime
There are still a few conditions that cause it to 'explode'
when different browsers disagree on element semantics.

Overall it's a much cleaner approach, but it will require
extensive tuning to improve performance, as there are still
many complete dom traversals which will not scale for large documents
ansuz 1f7f90165f Slap marked.js onto a textarea
Multiple people can now edit markdown and see the results in realtime.
ansuz d5a1629a93 A really basic shared text area with encryption.
...and not much else. If you want to hack on something
this is a great place to start.
ansuz 50121c8ab6 a really basic collaborative input
type="text" is typically slower than the same code
when used to sync a textarea.

WATCH OUT!
ansuz b18dfef656 sharejs textarea is used by realtime-input.js
ansuz 997ce1147f realtime input wraps up basic realtime stuff
so we don't have to rewrite the realtime api for every application.
starting to move towards a portable api :D
ansuz 40b8c0efe8 drop in chjj's marked.js for a cool demo
ansuz 2d8ffdf31c Merge branch 'master' of github.com:ansuz/cryptpad
ansuz 0c2e057f9d export component APIs from convert
ansuz b958caebdd dom, vdom, hyperjson, and an api which provides a matrix of conversions
ansuz 4cf2a8a0bd rtwiki.js : catch some typeErrors
Lars-Magnus Skog 84c0ea6d26 refactor: pass in ifrw.CodeMirror into andThen()
ansuz 663e987345 fix race condition in codemirror initialization
over slow connections, iframes don't load fast enough to be ready for code
which depends on certain features existing.

wait until they're ready, then initialize.
ansuz 2ed9f0867a Merge branch 'master' of github.com:xwiki-labs/cryptpad into codepad
ansuz c71b060dc2 main.js : wait until your editor is defined before trying to reference it. addresses a race condition that caused ckeditor to fail half the time.
ansuz ff52f050e5 chainpad.js : pull in upstream changes to chainpad.js. new APIs
ansuz 9fc44cdf0c add notes to clientside js files
mouhb af80bed07b XWR-190: Make CryptPad version with rtwiki/CodeMirror
mouhb 9626dfc365 XWR-190: Make CryptPad version with rtwiki/CodeMirror
Yann Flory 9a932a3f56 Patch Realtime into CodeMirror in CryptPad
Yann Flory 32f44161a7 Patch Realtime into CodeMirror in CryptPad
Caleb James DeLisle 88fb6772e8 Cleaned up the front page and added a little piece of code to show recent pads
Caleb James DeLisle 51544db9a2 Completed adding of customization system and bottom infobar
Caleb James DeLisle 84164123b6 not quite finished
Caleb James DeLisle 0e44b10aeb Seperated common crypto operations to common file and made common toolbar used for both pad and spreadsheet
Caleb James DeLisle e039e90a24 upgrade to most recent chainpad
Caleb James DeLisle c13bfe978a Switched cryptpad to use common/toolbar.js which is shared with cryptsheet
Caleb James DeLisle 50c10f818e Added cryptsheet to cryptpad suite!
Caleb James DeLisle 4a63ba7df3 Give cryptpad a proper main page
Caleb James DeLisle 652a1da7a4 oops changed some work in the js file
Revert "change logo"

This reverts commit 9325100a02.
Caleb James DeLisle 9325100a02 change logo
Caleb James DeLisle 3330fae47e typo
Caleb James DeLisle 8fc732d879 remove the 'magic line' because it causes problems with the realtime
Caleb James DeLisle 0d3ded68a0 use a websocket which automatically reconnects if the connection is lost
Caleb James DeLisle e3a54c11ee remove some code which may be over-engineering
Caleb James DeLisle 2a1f3f9027 show a little spinner which spins when loading and when people type
Caleb James DeLisle 87aa1aaf91 don't start measuring lag until after syncing and update readme
Caleb James DeLisle 6d68bb0bde error when opening error message window D:
Caleb James DeLisle 6cbdcdec65 Show users editing and lag, properly send message to indicate that all users have left channel and show basic error box if disconnected.
Caleb James DeLisle 5ae599fa07 support different ports for websocket and http
Caleb James DeLisle a6b88e276c use the slower version of applyHTMLOp
Caleb James DeLisle b6523adb1f rand fixed
Caleb James DeLisle 1508c7ba71 and so it begins