6592 Commits (a528d857a74e9d057fbc9a2b26e979971fb4231f)

Author SHA1 Message Date
ansuz a1f9b10175 remove offending line from chainpad entirely
RTCHAINPAD-3
9 years ago
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.
9 years ago
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
9 years ago
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/
9 years ago
Yann Flory 360fee9feb Fix a new cursor error with Codepad 9 years ago
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)
9 years ago
Yann Flory 713c90242b Hide the usernames when they have not been changed 9 years ago
Yann Flory c53baab99d Update Codepad with the latest improvements 9 years ago
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
9 years ago
ansuz cd357a9136 turn an alert into a console.error 9 years ago
ansuz ec64e0d381 use getAttribute to inspect document elements
el.getAttribute('attr') is more reliable than el[attr].
9 years ago
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
9 years ago
ansuz 842b9d4243 Generalize _socket/realtime-input.js a little more
Anything JSON related should be at the application layer
9 years ago
Yann Flory cf9f60bd57 The server don't send back anymore messages to their sender 9 years ago
Yann Flory eb4ea7a6b0 Remove the content from the ACK messages sent by the server 9 years ago
Yann Flory ba4faea939 Update the pads to run with the latest improvements to the websocket server 9 years ago
Yann Flory 5ef7e29a9b Add the latest changes from _socket into the netflux pad 9 years ago
ansuz b59a14c5ac merge hyperjson changes from realtime xwiki
more resilient class serialization.
comments
9 years ago
ansuz 2691d85582 use forked chainpad with assertions for _socket 9 years ago
Yann Flory b41f0e8c50 Merge branch 'cjd-fixed-it-with-hax' into netflux2 9 years ago
ansuz c50690349b comments describing the role of each argument 9 years ago
ansuz df78d284c4 initial state should be valid JSON so JSON parse doesn't fail 9 years ago
ansuz 96e03fcfa4 Use latest chainpad without mutations 9 years ago
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
9 years ago
ansuz aaf7c777cc add debugging info to the textPatcher
* kill dead code
* add assertions
* better logging for insertions and removals
9 years ago
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.
9 years ago
ansuz e446a3645c don't send funny BR attributes over the wire. Properly initialize the typing test 9 years ago
ansuz 22290590cb don't rely on window scope in typingTest.js 9 years ago
ansuz 772ca5d30e comment out debugging line 9 years ago
ansuz 6c340a6527 chainpad testing = true, reject non-compliant messages 9 years ago
ansuz afa1104d85 Pull the cursor out of bogus BR tarpits when it gets stuck 9 years ago
ansuz bac0e0ff88 implement hyperjson filtering 9 years ago
ansuz e51635c4bb fix index error 9 years ago
ansuz 3aebf7d2c2 minor changes to pass linting 9 years ago
ansuz 29e24f556c kill another window variable 9 years ago
ansuz e699073d45 attempt to preserve the magic line plugin while someone else is typing 9 years ago
ansuz 941f5361ea forgot to add 'typingTest', which main depends on 9 years ago
ansuz d852c578d8 removed dead code 9 years ago
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
9 years ago
ansuz 478ccbf984 revert changes to chainpad 9 years ago
ansuz e3b78e20de Merge branch 'cjd-fixed-it-with-hax' of github.com:xwiki-labs/cryptpad into cjd-fixed-it-with-hax 9 years ago
ansuz e26246178f start to clean up and give things more sensible names.
get rid of the textarea entirely
9 years ago
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 9 years ago
Caleb James DeLisle f3fb674504 Merge branch 'cjd-fixed-it-with-hax' of github.com:xwiki-labs/cryptpad into cjd-fixed-it-with-hax 9 years ago
Caleb James DeLisle 98c85cef8b xxx 9 years ago
ansuz 12dcbc9121 fix quick red fox and make test.cancel work again 9 years ago
Caleb James DeLisle 62eabbc7ae If a message does not match parent hash, don't delete it from storage 9 years ago
Caleb James DeLisle dbf31798d5 json-ot triggering PARANOIA errors in ChainPad 9 years ago
Caleb James DeLisle 03932d0169 small changes to chainpad for testing 9 years ago
Caleb James DeLisle 669bcc1935 If there is a difference in the hjson then send a message back 9 years ago
Caleb James DeLisle f62ec85a4c Shuffled around some assertions and logs 9 years ago
Caleb James DeLisle 420a7098a6 more testing and crap 9 years ago
ansuz 4b35a145e3 Push WIP 9 years ago
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.
9 years ago
ansuz e066730b68 add notes about how hyperjson is to be used 9 years ago
ansuz cd462ed872 Merge legacy websocket version 9 years ago
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
9 years ago
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.
9 years ago
ansuz 475ca9bea8 hyperjson.js : used split instead of filter... oops 9 years ago
ansuz 1bd5cb9e27 hyperjson.js : used split instead of filter... oops 9 years ago
ansuz b2753ef7b7 fix string manipulation off-by-one 9 years ago
ansuz f98fda7604 fix string manipulation off-by-one 9 years ago
ansuz 4f3fcb08a4 better error reporting when the operational transform fails to parse JSON 9 years ago
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.
9 years ago
ansuz fbe6225681 Don't attempt to use the cursor selection when it has length 0
RTWYSIWYG-20
RTWYSIWYG-24
9 years ago
ansuz 0c6222b5f9 better error reporting when the operational transform fails to parse JSON 9 years ago
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.
9 years ago
ansuz bd24821c6c Don't attempt to use the cursor selection when it has length 0
RTWYSIWYG-20
RTWYSIWYG-24
9 years ago
Yann Flory de6db0285c Limit the size of the usernames to 32 chars 9 years ago
Yann Flory 38d797a4f1 Fix issue with Chrome and WebRTC 9 years ago
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
9 years ago
Yann Flory e77d85bc82 Trigger an onReady() method when the user's pad is fully synced (the history is loaded) 9 years ago
Yann Flory eca4ec699c Ability to change the username (the user ID is displayed by default) 9 years ago
Yann Flory 6e50ae94dd Remove unused code 9 years ago
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
9 years ago
Yann Flory 3a188625e0 Improve the detection of a disconnected peer to update the user list with the WebRTC service 9 years ago
Yann Flory 77e7fb5724 Fix an issue with the WebRTC service where it was impossible to join a channel once someone had left this channel 9 years ago
Yann Flory 06e5c84702 Clean some code 9 years ago
Yann Flory 29033f344c Merge branch 'netflux' of github.com:xwiki-labs/cryptpad into netflux 9 years ago
Yann Flory b1e8bcddef Fix the user list not working with the WebRTC service and causing major issues 9 years ago
Yann Flory c576241104 Add a Chainpad adapter to make Chainpad know the userList 9 years ago
ansuz fb0e82931d correct malformed json 9 years ago
Yann Flory ae8f6f7f2c Ability to choose which protocol to use (Websocket or WebRTC) with Netflux 9 years ago
ansuz 3a7af63c54 correct malformed json 9 years ago
Yann Flory b7885eb539 Fix channel history 9 years ago
ansuz 136e2d8cf2 pass in missing textarea argument so textpad starts working again 9 years ago
ansuz 8258018c1d Revert "fix undefined reference"
This reverts commit 7d65540123.

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

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

WATCH OUT!
9 years ago
ansuz b18dfef656 sharejs textarea is used by realtime-input.js 9 years ago
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
9 years ago
ansuz 40b8c0efe8 drop in chjj's marked.js for a cool demo 9 years ago
ansuz 2d8ffdf31c Merge branch 'master' of github.com:ansuz/cryptpad 9 years ago
ansuz 0c2e057f9d export component APIs from convert 9 years ago
ansuz b958caebdd dom, vdom, hyperjson, and an api which provides a matrix of conversions 9 years ago
ansuz 4cf2a8a0bd rtwiki.js : catch some typeErrors 9 years ago
Lars-Magnus Skog 84c0ea6d26 refactor: pass in ifrw.CodeMirror into andThen() 9 years ago
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.
9 years ago
ansuz 2ed9f0867a Merge branch 'master' of github.com:xwiki-labs/cryptpad into codepad 9 years ago
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. 9 years ago
ansuz ff52f050e5 chainpad.js : pull in upstream changes to chainpad.js. new APIs 9 years ago
ansuz 9fc44cdf0c add notes to clientside js files 9 years ago
mouhb af80bed07b XWR-190: Make CryptPad version with rtwiki/CodeMirror 9 years ago
mouhb 9626dfc365 XWR-190: Make CryptPad version with rtwiki/CodeMirror 9 years ago
Yann Flory 9a932a3f56 Patch Realtime into CodeMirror in CryptPad 9 years ago
Yann Flory 32f44161a7 Patch Realtime into CodeMirror in CryptPad 9 years ago
Caleb James DeLisle 88fb6772e8 Cleaned up the front page and added a little piece of code to show recent pads 10 years ago
Caleb James DeLisle 51544db9a2 Completed adding of customization system and bottom infobar 10 years ago
Caleb James DeLisle 84164123b6 not quite finished 10 years ago
Caleb James DeLisle 0e44b10aeb Seperated common crypto operations to common file and made common toolbar used for both pad and spreadsheet 10 years ago
Caleb James DeLisle e039e90a24 upgrade to most recent chainpad 10 years ago
Caleb James DeLisle c13bfe978a Switched cryptpad to use common/toolbar.js which is shared with cryptsheet 10 years ago
Caleb James DeLisle 50c10f818e Added cryptsheet to cryptpad suite! 10 years ago
Caleb James DeLisle 4a63ba7df3 Give cryptpad a proper main page 10 years ago
Caleb James DeLisle 652a1da7a4 oops changed some work in the js file
Revert "change logo"

This reverts commit 9325100a02.
10 years ago
Caleb James DeLisle 9325100a02 change logo 10 years ago
Caleb James DeLisle 3330fae47e typo 10 years ago
Caleb James DeLisle 8fc732d879 remove the 'magic line' because it causes problems with the realtime 10 years ago
Caleb James DeLisle 0d3ded68a0 use a websocket which automatically reconnects if the connection is lost 10 years ago
Caleb James DeLisle e3a54c11ee remove some code which may be over-engineering 10 years ago
Caleb James DeLisle 2a1f3f9027 show a little spinner which spins when loading and when people type 10 years ago
Caleb James DeLisle 87aa1aaf91 don't start measuring lag until after syncing and update readme 10 years ago
Caleb James DeLisle 6d68bb0bde error when opening error message window D: 10 years ago
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. 10 years ago
Caleb James DeLisle 5ae599fa07 support different ports for websocket and http 10 years ago
Caleb James DeLisle a6b88e276c use the slower version of applyHTMLOp 10 years ago
Caleb James DeLisle b6523adb1f rand fixed 10 years ago
Caleb James DeLisle 1508c7ba71 and so it begins 10 years ago