gun/CHANGELOG.md
Mark Nadal 087704ec6b
Begin 1 Years worth of Merges... (#1116)
* tmp for hn issue

* log top to stats

* test for guntest peer

* try big messages

* parse time?

* what bin/node is 11ms?

* be normal for hnoon

* tolerate 0.5s

* try 3s for hnoon?

* stop empty gets

* tmp for guntest

* back to normal

* check hash time

* back to normal in hear

* screen / upload / play / pause

* merge latest npm release into manhattan

* merge master 0.2020.421 into manhattan manually

* WIP

* manually merge from master

* gatling

* Update upload.html

* work in progress...

* yson panic chat basic

* after `.put(` walk

* restructure acks

* messy but 2 units passing!

* put recursive once on map

* basics

* have NTS use DAM + fix other utils

* Rewrote nts

* Allow passing test cli args.

Before, no CLI args would be passed when running `npm test`. Keeping the `mocha` at the end of the test script allows passing CLI args to Mocha.

* put back scan & once tweak

* PANIC user paste OK

* manhattan sea

* stub out nts for now

* AXE tweak

* tweak for quick first prod testing

* tweak for first in-prod testing

* tweak

* tweak

* sketchy in-prod debug attempt

* caught it? maybe? now restore

* Create download-log.html

* stub out yson test prod?

* ugh, gotta see what is going on

* move dl

* gonna stop doing commit messages for in-prod test/tweaks/debugging

* a

* p

* squelch

* console stats

* stats

* stop travis

* restore yson

* ahhh no file access without sudo

* mem

* no stub

* fix axe

* bump

* back to in-prod testing, isolate/stub out code

* stub all out for 17K ? CPU ? test

* stub dup gc

* ugh main stub

* does this stop url format blocking?

* re-add dup

* no top :(

* will this work?

* get ack stats?

* a map chain may ask for data not a root soul chain

* move proper logic into .get(

* how 2019 compat?

* a couple more!

* more tests passing! :D :)

* even more! SO EXCITING :D

* Am I alive?

* wow I can't believe it works like this

* THANK YOU @rogowski !!!!!!

* Create trace.html

Adding tracing to debuging.

* @rogowski is a super star :) :) :)

* Update trace.js

Change `Gun.logs` to `Gun.traces` and `Gun._log` to `Gun._trace`.

* Update trace.html

Change `Gun.logs` to `Gun.traces` and `Gun._log` to `Gun._trace`.
Overload get,put,on,map

* @rogowski approved of these trace changes :)

* Update trace.html

More decoupled.

* Update trace.js

More decoupled

* 2 steps backwards, 1 step forward?

* back where we ( @rogowski ) started :P

* YAYAYAYAYAYAYAY past where we started at!

* safer to have it here

* slight tweak? Let's see how long it lasts.

* merge checks we left out during consolidation

* ugly common.js for @rogowski

* slightly better

* amazing map discovery + don't clear on not found if data exists

* onto next test...

* all caught up!!! Now update tests from graphify to statedisk

* Update common.js

Tests updated from graphify to statedisk.

* easy to debug & fix thanks to @rogowski 's test upgrades & trace!

* hmm, IDK if we should support this anymore?

* support once chaining?

* check if listener order is earlier than write

* in-process message passing needs to clean itself of flags for now

* ack to chains that can't be reached

* call sub chains on clear/empty WIP

* call sub chains clear/empty OK!

* into unlink. Clean/refactor later.

* oh that was nice

* self check not needed?

* test was poorly constructed?

* refactor unlink to cleaner logic

* Will you blame me for this? Special case, maybe later move to cleaner place?

* use stun's run id instead.

* cleaner unlink logic

* better map, link, and unlink logic.

* unstub relay

* refactor unlink

* invert

* if prev value would have caused unlink, do not unlink again.

* w000h00! Best unlink so far.

* woops, fix unlinking nested

* unsubscribe nested maps (working, tho possible perf regression? check)

* put check soul

* add default uuid

* improved browser peer retry logic, let devices sleep, etc.

* Chaining API unit tests passing!

* merge new panic tests into here to test

* add panic utils

* fix long streaming timeout/expiry issue, update examples

* yield generating test data

* yeah, adapter errors (like out of storage) should not affect sync/networking logic, that was a bad experiment

* git glitch?

* some mid debugging fixes but maybe scary changes, hopefully safe to revert here except dub

* SEA unit tests passing!!! Needed quite a few fixes on async write queue stuff.

* optionally make auth async

* revise/correct set

* Fix reverse boundary check

* Add extra tests, catch bad guy, obliterate bug.

* chat app with emoji examples

* handle empty string keyed objects

* starting lex support

* tweak for lex

* woops! lexical alphabetical oopsies. That was bad.

* upload either way

* debug

* start

* fix

* fix

* clean + feature

* update dependencies in package.json (#1086)

* rad lex once map once

* axe polyfill for now

* oops log

* oops maybe without this it crashed the peer

* what on earth happened to my browser/OS? "unplug & plug it back in" restart seemed to fix it.

* oh, don't memory leak req/res asks. :/ duh!

* no accidental #soul.""

* ugh, still have to sort :(, really should polyfill weakmap then

* oops, pluck needs new object to go into

* oops, make sure soul is passed

* updating deprecated functions

* begin AXE. Next: load balance!

* Update sea.js

* keys are dangerous!

* AXE round robin load balance

* better ash hash checking

* lS reuse in-mem reply chunking

* state machine!!!

* RAD needs to pass cache misses.

* updating deprecated functions (#1088)

* update dependencies in package.json

* updating deprecated functions

* remove where.gundb.io

* Bring SEA.certify into manhattan branch (#1092)

Co-authored-by: Radu Cioienaru <radu@projectmanager.com>

* fix rad, make get() hookable

* rad browser tests seem to be passing!

* reverse user random side, add err, update styles, + more

* fix pack/max, update dom

* paste!

* of course it'll dedup cause it just called track on hear, fix

* 📦 Adding the hub feature to this branch & improvements. (#1102)

* 📦 Adding the hub feature to this branch.

* 🗑 Removed the container for speed improvement !

* 📝 I added some comments to the code.

Co-authored-by: Hector <fairfairytotor@gmail.com>
Co-authored-by: Hector <pro.hector.kub@gmail.com>

* Update axe.js

* 🦅 Wrap everything in a try & catch for error handling…  (#1105)

* 🦅 Wrap everything in a try & catch for error handling & speed improvement.

* 📦 Finally here : opt.file for the hub feature !

* 📦 Finally here : opt.file for the hub feature !

And also : fixed indentation 😋

Co-authored-by: noctisatrae <pro.hector.kub@gmail.com>

* probs better this way, safer

* moved test/axe tests to test/panic/axe.

* New test: axe load balance.

* axe test: webrtc data balance(fix paths and file renamed).

* test axe: renaming webrtc file.

* axe test: separating webrtc test for data_balance.

* axe test: test only with the relay(without webrtc).

* Update sea.js

Same as https://github.com/amark/gun/pull/1062

* Update gun.js

var tmp

* Update upload.js

* merge, update stun

* SEA.certify wire logic + unit tests (#1110)

* SEA.certify wire logic + unit tests

* picking white hair

* ack err

* axe tests using puppeteer.

* change stun system

* ~20lines

* put use parent soul link if need

* handle errors

* finally seems fixed

* cb not to

* relay

* nasty bug! Don't crash, tho need to find what causes it

* undo local changes/notes to self

* deprecation warnings

* "old" data to test against

* oops, forgot I played with ascii

* debug

* in-prod check: sites

* in-prod isolate

* gotta find this, by stubbing out

* where?

* will this work?

* clearly not, lol what's the point then? maybe like this

* and again

* must we?

* USE THIS MANHATTAN VERSION

* clean

* better panic hints

Co-authored-by: Robin Bron <finwo@pm.me>
Co-authored-by: Pavel Diatchenko <diatche@users.noreply.github.com>
Co-authored-by: rogowski <163828+rogowski@users.noreply.github.com>
Co-authored-by: I001962 <i001962@gmail.com>
Co-authored-by: Adriano Rogowski <rogowski.adriano@gmail.com>
Co-authored-by: Radu <cetatuie@gmail.com>
Co-authored-by: Radu Cioienaru <radu@projectmanager.com>
Co-authored-by: Hector <46224745+noctisatrae@users.noreply.github.com>
Co-authored-by: Hector <fairfairytotor@gmail.com>
Co-authored-by: Hector <pro.hector.kub@gmail.com>
Co-authored-by: Martti Malmi <sirius@iki.fi>
Co-authored-by: mimiza <dev@mimiza.com>
2021-08-21 21:19:29 -07:00

5.8 KiB

CHANGELOG

0.2020.x

>0.2020.520 may break in-process gun1 gun2 message passing. Check test/common.js "Check multi instance message passing" for a hint and/or complain on community chat.

  • No breaking changes to core API.
  • Storage adapter put event breaking change (temporary?), RAD is official now and storage adapters should be RAD plugins instead of GUN adapters.
  • GUN soul format changed from being a random UUID to being a more predictable graph path (of where initially created) to support even better offline behavior. This means nulling & replacing an object will not create a new but re-merge.
  • Pretty much all internal GUN utility will be deleted, these are mostly undocumented but will affect some people - they will still be available as a separate file but deprecated.
  • As the DHT gets implemented, your relay peers may automatically connect to it, so do not assume your peer is standalone. Gun({axe: false should help prevent this but loses you most scaling properties.
  • The 2019 -> 2020 "changes" are happening gradually, based on experimental in-production tests.
  • As always, most important is to ask in the community chat if you have any issues, and to keep up to date with changes.

0.2019.x

Some RAD & SEA data format changes, but with as much backward compatibility as possible, tho ideally should be dropped.

0.9.x

No breaking changes, but the new Radix Storage Engine (RSE) has been finally integrated and works with S3 as a backup.

// Edit: commentary removed.

0.8.x

Adapter interfaces have changed from Gun.on('event', cb) to gun.on('event', cb), this will force adapters to be instance specific.

.path() and .not() have been officially removed from the core bundle, you can bundle them yourself at lib/path.js and lib/not.js if you still need them.

0.7.x

Small breaking change to .val(cb):

Previously .val(cb) would ONLY be called when data exists, like .on(cb).

However, due to popular demand, people wanted .val(cb) to also get called for .not(cb) rather than (before) it would "wait" until data arrived.

NOTE: For dynamic paths, .val(cb) will still wait, like:

gun.get('users').map().val(cb) because the behavior of the map() is simply to not fire anything down the chain unless items are found.

0.6.x

Introduced experimental features, chaining .val() (no callback) and .map(cb) behaving as a map/reduce function.

It also upgraded the socket adapters and did end-to-end load testing and correctness testing.

0.5.9

GUN 0.3 -> 0.4 -> 0.5 Migration Guide: gun.back -> gun.back(); gun.get(key, cb) -> cb(err, data) -> cb(at) at.err, at.put; gun.map(cb) -> gun.map().on(cb); gun.init -> deprecated; gun.put(data, cb) -> cb(err, ok) -> cb(ack) ack.err, ack.ok; gun.get(key) global/absolute -> gun.back(-1).get(key); gun.key(key) -> temporarily broken;

0.3.7

  • Catch localStorage errors.

0.3.6

  • Fixed S3 typo.

0.3.5

  • Fixed server push.

0.3.4

  • Breaking Change! list.set(item) returns the item's chain now, not the list chain.
  • Client and Server GUN servers are now more up to spec, trimmed excess HTTP/REST header data.
  • Gun.is.lex added.

0.3.3

  • You can now link nodes natively, gun.get('mark').path('owner').put(gun.get('cat'))!
  • Sets (or tables, collections, lists) are now easily done with gun.get('users').set(gun.get('person/mark')).

0.3.2

Bug fixes.

0.3.1

Bug fixes.

0.3

Migration Guide! Migrate by changing .attach( to .wsp( on your server if you have one with gun. Remove .set() (delete it), and change .set($DATA) (where you call set with something) to .path('I' + Date.now() + 'R' + Gun.text.random(5)).put($DATA). If you have NodeJS style callbacks in your .get (which documentation previously recommended that you shouldn't) they previous took err, graph and now they take err, node (which means now using callback style is fine to use). Inside of .not() no longer use return or this, instead (probably) use gun and no return. If you are a module developer, use opt.wire now instead of opt.hooks and message Mark since he needs to talk to you since the wire protocol has changed.

  • Server side default .wsp() renamed from .attach().
  • .set() deprecated because it did a bunch of random inconsistent things. Its useful behavior has now become implicit (see below) or can be done explicitly.
  • .not() it was previously common to return the chain inside of .not, beware that if you have code like gun.get(key).not(function(){ return this.put({}).key(key) }).val() cause .val() to be triggered twice (this is intentional, because it funnels two separate chains together) which previously didn't happen. To fix this, just don't return the chain.
  • .put() and .path() do implicit .init() by default, turn on explicit behavior with Gun({init: true}).
  • .get(soul, cb) cb is called back with err, node rather than err, graph.
  • Options opt.wire renamed from opt.hooks.
  • .val() when called empty automatically cleanly logs for convenience purposes.
  • .init() added.
  • Gun.is.val renamed from Gun.is.value.
  • Gun.is.rel renamed from Gun.is.soul.
  • Gun.is.node.soul renamed from Gun.is.soul.on.
  • Gun.union.ify renamed from Gun.union.pseudo.
  • Gun.union.HAM renamed from Gun.HAM.
  • Gun.HAM is now the actual HAM function for conflict resolution.
  • Gun._.state renamed from Gun._.HAM.
  • Maximum Callstack Exceeded is less problematic now, unless you intentionally choke the thread. #95
  • Putting a regex or Date or NaN is actually detected and causes an error now while before it was silent. #122 #123
  • .on() gets called when a key is later newly made while before it did not. #116
  • .val() should not ever get called with a relation alone (internals should resolve it), this is fixed. #132