All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
3.1.1 (2017-11-14)
- shared kegs re-encryption is safe and secure now (965d1ec)
3.1.0 (2017-11-14)
- prombservable variation to expect multiple values (2a776a6)
3.0.10 (2017-11-13)
3.0.9 (2017-11-13)
3.0.8 (2017-11-10)
- PR template [skip ci] (1a45e9f)
3.0.7 (2017-11-09)
3.0.6 (2017-11-09)
3.0.5 (2017-11-09)
3.0.4 (2017-11-09)
3.0.3 (2017-11-09)
3.0.2 (2017-11-09)
3.0.1 (2017-11-07)
3.0.0 (2017-11-07)
Message#externalImages
array objects property renamedoversized
=>isOverInlineSizeLimit
2.14.7 (2017-11-06)
2.14.6 (2017-11-04)
- copy (68009d9)
- tiny db records for download resume were never deleted in case of keg removal (c29d9f4)
2.14.5 (2017-11-04)
- NodeFileStream#getStat was throwing instead of rejecting promise (28f9ce5)
2.14.4 (2017-11-04)
2.14.3 (2017-11-04)
- chat paging no longer breaks if entire page of deleted/empty messages was received (3387b23)
2.14.2 (2017-11-03)
2.14.1 (2017-11-02)
2.14.0 (2017-11-02)
- some tweaks in marking unread items logic (04ccf5e)
- beforeShareCallback in FileStore#shareAndUpload allows you to add last modifications to keg before sharing (26c1754)
2.13.4 (2017-11-01)
2.13.3 (2017-11-01)
2.13.2 (2017-11-01)
2.13.1 (2017-10-31)
2.13.0 (2017-10-31)
- chain callback to wait for result (ca8f1fa)
- cleanup (ca4c9ae)
- delete room test (7dee8b5)
- failed messages displaced if managed to get keg id (41447d1)
- file not appearing in sidebar in new DMs (7775b3d)
- find email contact (cabad11)
- make first test pass (d93536c)
- make sure data from scenario is not null before processing it (38b4769)
- merge scenarios for Send/receive read receipt (59a379a)
- merge send/receive scenarios (66a0a65)
- move test from util to keys (898954a)
- move test related packages to devDependencies (bc25beb)
- potential duplication of contacts now is prevented in sdk (c7e39ea)
- profile tests (f450da2)
- receiver can't see deleted files (0414bd4)
- redo contact filter story (189b0d1)
- remove filters tests (615df7e)
- remove mailinator package from dependencies b/c causing errors in returned response (79e58a2)
- remove unused feature (965088f)
- resolve error response after sharing file (1e1e898)
- run primary address test on separate instance (d5f83f1)
- storage stories (f37f23a)
- storage test path (9ff28d6)
- stringify passed data; unify support code (2971832)
- undo reset code (7131005)
- update docs (2a1f1af)
- update story (d1d6b76)
- wait on contact being loaded to check if it's in the invites or not (d877295)
- 2fa (5518773)
- add a few test scenarios (8e69b86)
- add create account with username helper (94a8bb0)
- add icebear source in e2e tests (b5ac74e)
- add input data as process env to scenario runner (e188e5c)
- add sign in test implementation (24d9c33)
- add tests for ghost chats (3c1b172)
- added more happy path tests and few edge cases (b1ca9f1)
- avatar tests (7bb888c)
- clear require cache (50c3071)
- Create favorite contact from invited user (f1e0651)
- cucumber child process helper (4c0c982)
- delete account feature (849965a)
- delete file test implementation (9b49754)
- delete room (8d2a582)
- end to end test project with sample test and docs (cba2a03)
- End to end tests for Icebear (#51) (6595b71)
- favorite dm (e88b3d7)
- file icon types (#52) (d2d152b)
- made receipts observable (68d2596)
- make 'download file from storage' test pass (07ccb27)
- new test case for deleting file after sharing it (06534ee)
- promservable and string unit tests (2e182d3)
- receive DM (fe77e7c)
- remove favorite (d6e377e)
- Remove favorite contact before email confirmation (8df5305)
- run scenario on separate thread and pass back data to calling feature (0b4d144)
- run scenarios by name (675bb91)
- search folders for features (5a80478)
- send chat invite, log in as receiver and view invite (58c7cf9)
- Send invite email test (4a2a924)
- separate cucumber scripts (70263ec)
- share a file and login as receiver to view it (9c2b39d)
- task pacer helper (917157f)
- test for changing primary address (0e5d3e4)
- test implementation for sign out, add/remove email (de5e2c5)
- test that admin can change room name and purpose (c3bbb4f)
- test that i can make other user admin / not admin in room i created (e42ae2b)
- test that i can remove participant from room i created (c62e497)
- tests for file helper (35fe207)
- update access scenarios (1f7eb65)
- update test cases for avatar and user email (f4da42c)
- upload file test (da429ee)
- use another id to invite for every room test (7fa15a3)
- wait for chat to be added to chat list, verify that message is received (3a0c86c)
- wait on auth and profile loaded in login step (54afce9)
2.12.0 (2017-10-23)
- make getUrls always return an array (3a9f944)
- more reliable message re-processing when external content settings change (e5cb4a4)
- one more pref for external content (db6c34e)
- prevent endless file caching loop in case of error (243b684)
- typings: correct typings for message keg (#50) (233e565)
- messages: support rich text field in message kegs (#49) (66bd370)
- serverSettings: support for maintenance window (#48) (7b51328)
- add File#nameWithoutExtension (be96cf1)
- chat inline content settings support (04f43fc)
- refresh external content state on settings change (d87f3a9)
- unfurl and auto-download images (0075a83)
- increase chat scrolling window for better ux (f715447)
- load files after chats to speed up startup time (021b0b5)
- throttle unfurl, don't request same url in parallel (d6019af)
2.11.1 (2017-10-02)
2.11.0 (2017-10-02)
- chat name and purpose limits (3944aef)
- new message marker now shows in any chat and not only after app is regaining focus (0654784)
- really fix left participant auto-removal from boot keg (d526b66)
- smarter decision making on file up/download resume in case of errors (3075265)
2.10.1 (2017-09-27)
- expected format of the list of users who left channel was wrong (583750a)
- recent files should not try to load before meta (340d48a)
2.10.0 (2017-09-25)
- admins always on top of participants (67dc9f9)
- channel active members list computation issues (399db28)
- move test from util to keys (#46) (36c5d58)
- validation race condition when several validation runs are triggered (#47) (e6f8605)
- rename Queue to TaskQueue (queue.js -> task-queue.js) to add more kinds of queues without confusion (c1fe5ed)
- helpers/queue.js module is now called helpers/task-queue.js
2.9.0 (2017-09-20)
- 'file unavailable' issue for inline files in chat (246732a)
- custom name only for channels (3f67de6)
- filter out chats that don't have chat_head loaded (1f66f06)
- re-appearing of existing chats (3276144)
- info messages autoretry send now (93eee20)
- contact lookup batching interval depends on app state (ddb30cd)
2.8.0 (2017-09-18)
- chat loading optimization (748dbdf)
- contact lookup and tofu keg load batching (eed350b)
- less awkward chat list loading through waiting for chat head (565d294)
2.7.0 (2017-09-15)
- retry digest load on timeout (3f70e62)
- some improvements and bugfix around room participants and invite rejections (88a12fd)
2.6.1 (2017-09-11)
- removed unwanted warning on automated removeParticipant, for real this time, promise (5fe2048)
- server anti-spam (77d8768)
2.6.0 (2017-09-11)
- tinydb: use storage engine creator function instead of constructor (#43) (7c8040e)
- chat names for unmigrated DMs (8e9c5b1)
- do not send 'invited' system message when a room was created without participants (fcc08ae)
- properly handle rejected channel invites (2fe2991)
- remove error snackbars when room participants are being removed automatically (dd73f3c)
2.5.0 (2017-09-08)
- better handling of chat leave/kick situations (4449926)
- ghost: pass db to Ghost constructor (#37) (e8db3b1)
- disable shared file keg re-encryption as a temporary workaround (c0ab754)
- do now show 'you have been removed from channel' when user deletes a room (3ece49a)
- give user another chance if 2fa entered incorrectly on login (0143d46)
- removed 'cancelable' option from 2fa requests (1e3756f)
- socket.io duplicating open connections on reset (1af0129)
- sorting bug on invites (2304b84)
- unconfirmed emails now still give hints about existing channel invites (001d94b)
- unlimited upload size handled correctly (35e0e5a)
- auto add email invites to channel when they join (3e0f29f)
- avatar uploaded bonus (#39) (a71c0c3)
- bonus flag properties in User (#35) (6c04adc)
- channel email invites (8e01c41)
- channel email invites (76de8e8)
- new property chat.leaving (3b05dda)
- sdk exports Contact model (2382d75)
- send/remove email invites to channel (17b5252)
- signout support to expire 2fa trust (b11b683)
- use retry for setAccountKeyBackedUp (#36) (b449961)
- crypto: add utils.getRandomAccountKeyHex (#38) (159d4f3)
- channel email invites (ce5e7f8)
2.4.0 (2017-08-31)
- crypto: make sure failed encrypt operation throws instead of producing empty ciphertext (e2ad1c2)
- attempt to fix chat migration (dbb767d)
- chat migration (0b42a43)
- setAccountKeyBackedUp server call (#34) (86fafb6)
- take file upload limits from server (#33) (b527eff)
2.3.0 (2017-08-26)
- add default values to trust flag in 2fa api (4e8a857)
- api path (9599fa5)
- change DM participant limit to 4 (bbe40dd)
- channel limit behaviour (0afee71)
- channel name didn't appear in invite if participants were added as a part of channel creation routine (9c740f6)
- channel system messages (8cb475d)
- correctly activate channel after accepting invite (989d71e)
- prevent spamming server on bootkeg migrations (b3d682c)
- spam due to server index error protection (41950fa)
- typo and remove console-kungfu plugin from dev babel configuration (f27bee5)
- channels: new property Chat#joinedParticipants and participant list sorting (f24ac62)
- 2fa api (ad1541d)
- 2fa UI request (2449641)
- handle server 2fa requests on login (cdb0ba5)
- ui: don't allow file exceeding current plan limit (#32) (bc6e69a)
2.2.0 (2017-08-15)
- channels: system messages (cfc603f)
- files: unique file paths (#29) (1e93995)
- bootkeg migration (b67371f)
- channel name in invites (e1f54da)
- migrate DMs on sight (d23973c)
2.1.0 (2017-08-10)
- some channel fixes (7f71cac)
- admin management (f5066db)
2.0.1 (2017-08-09)
2.0.0 (2017-08-08)
- some safety nets for files and fix for anti-tamper protection (ce20e4a)
- keg: safe deserilizaton, avoid rewriting values with empty ones from empty keg (a1d4423)
- logs: remove usernames from logs (#27) (c0a458f)
- channel: create channel with chat-store (c2ed205)
- chat: chat gets new observable property
added
(a6dfa5b) - chat: chat store supports adding chat instance, thus reusing chat instance when creating new chat instead of reloading it (4541f88)
- chat: support for chat and channel 'purpose' property (2378e7a)
- keg: keg.dirty observable added to react to successful keg save (3a871aa)
- keg: keyId property removed from keg (f89873f)
- kegs: kegs support 'format' metadata property to track changes in keg payload and props structure (8e5016e)
- chat store loads and sorts channels (0faa2c1)
- Merge branch 'feat-channels' into dev (532f2b0)
- update tracker doesn't try to minimise traffic and amount of data to process on reconnect anymore (0e44d16)
- quotas: channel limit (3522961)
-
- Some chats are now channels, your client must support channels or it will confuse them for DMs
- update-tracker.js: removed
activateKegDb()
deactivateKegDb()
- keg.js: now assumes there's always a list of keys in keg db and uses keyId for crypto
- chat-keg-db.js: redone to support channels, clarity improvements TBD
- chat-boot-keg.js: redone to support channels and prepared for DM boot keg format migration
- system-messages.js: added new system message type - purposeChange
- keg: Keg#keyId is removed. No reason to have it in the keg instance, it's only used during deserialization.
1.5.2 (2017-08-01)
- regression (e82c75b)
1.5.1 (2017-08-01)
- make sure mobx
when
effect is called asynchronously for sequence-critical logic (282d121)
1.5.0 (2017-07-11)
1.4.0 (2017-07-02)
- signup: signup sends client version information according to the new api signature (755088d)
- files: file map added to file store to use instead of linear search (2d4f9f0)
1.3.0 (2017-07-01)
- contact: added Contact#isLegacy property to see if user was not found because migration is pending (7351154)
- files: enabled file re-sharing (68f17b6)
1.2.1 (2017-07-01)
- converted __sdk.json to __sdk.js to avoid copying in on clients when compiling icebear (d69c2c4)
1.2.0 (2017-07-01)
- build script fixed to make docs show correct version + update __sdk.json file (bddbf3a)
- hooks do
npm install
now too (b1509a7)
- auth: client sends sdk version on auth attempt (7191c21)
- auth: support for server auth deny due to client deprecation (73888c7)
1.1.5 (2017-06-29)
1.1.4 (2017-06-29)
1.1.3 (2017-06-29)
1.1.2 (2017-06-28)
1.1.1 (2017-06-28)
- auth: not failing if saved username does not exist (fc30093)
- auth: send arch to server (b63d1ef)
- auth: version, platform (182a1cc)
- avatar: update avatar letter on first name change (82cec6d)
- avatars: api change (200d3f5)
- bluebird: disable promise warnings for empty returns (7ba3832)
- build: moment should be in dependencies and peerDependencies (ece5a1d)
- chat: any activity in hidden chat automatically unhides it (6ebfcd0)
- chat: better grouping for sending messages (28439a6)
- chat: chat create/load logic (cbaa1c3)
- chat: chat hide logic improvement (f7f971a)
- chat: don't show new messages marker for own messages (13da762)
- chat: fail-safe chat keg db (f14f9a9)
- chat: failsafe chat hiding (a931800)
- chat: fix chat favorite state sync (6e90d82)
- chat: fix receipts and unread count logic (7a24828)
- chat: fix receipts freeze under certain circumstances (cb0a8cd)
- chat: frozen receipts (44a04eb)
- chat: handle empty message kegs properly (4d3ad7a)
- chat: last bits of error resiliency (e91b61a)
- chat: mark as seen (0bdb578)
- chat: mark messages as read in 2 seconds instead of 3 (c4b2624)
- chat: no fail on emty kegs (692b863)
- chat: prevent overwriting most recent message when paging up (9adff23)
- chat: remove leading/trailing whitespace from chat names (bdcb161)
- chat: somewhat fix message receive event (62d2384)
- chat: validate chat name (57e6cb8)
- chat: way better and smarter way to handle marking chat message as 'read' and removing new messages marker (8a24edd)
- chatlist: fix hidden chat not reappearing under specific circumstances (57da5f5)
- chatlist: sort favorite chats by name (1e7f2a5)
- chats: chat rename (0449788)
- chats: chats not loading for new accounts (9a56208)
- chats: fix duplicate messages (8d57eb3)
- chats: fix new message counter issues and updating after reconnect issues (5a988ee)
- chats: fix receipt loading after diconnect (8b096e5)
- chats: fixes chat refactor issues (a04cf8b)
- chats: new chat gets activated (ca41eac)
- chats: new chats loading correctly after reconnect (e310c56)
- chats: open cached chat from new chat screen (a2e8cbc)
- chats: refactor typo (e270bb5)
- chats: removing name from a new chat created unused 'chat name cleared' event (3002cd6)
- chats: reworked chat load/add/hide/star/unstar logic (2ab2b5b)
- chats: sendMessage as a mobx action (44cb169)
- config: coverage reporter fix (784b79d)
- config: fixed url config (07d286d)
- config: restore proper socket URL (e1930a1)
- contact: make contact lookup case insensitive (4a45905)
- contact: unicode aware first letter extraction (b467a7f)
- contacts: all kinds of invite fixes (6c070af)
- contacts: deduplicate invites keg data (61c005d)
- contacts: fav contacts not loading at login (c4966ec)
- contacts: flag not found contact properly (18938c7)
- contacts: now that we hide chats, make sure we still have all our previous contact in user picker (1a541ae)
- contacts: prevent duplicate contacts when looking up by email (bb7f353)
- core: retry logic returning original promise instead of recreating it (2131b15)
- core: snowflake minimal value is null (241a752)
- core: switch to a new server query api (e58d7bb)
- core: synced keg initial load and chat rename fix (86db184)
- core: toLocaleLowerCase where applicable (b52e7b2)
- crypto: 5x faster fingerprint calculation (e657e7e)
- crypto: expose keys, public, secret crypto (for ghost use) (4a0577d)
- crypto: hex to bytes for ghost (4dacf03)
- crypto: improve getRandomNumber (5c45215)
- crypto: increase interruptStep for most key derivations (e60e763)
- crypto: keys (029f43e)
- crypto: node support for crypto utils prng (fbf9506)
- crypto: passcode generation bug, some refactor (e0f4403)
- crypto: restore deriveKeys function resolving a value (8596608)
- crypto: throw correct error if nacl.box.open returns false (f68b388)
- crypto-util: fix arraybuffer implementation for safari (3748aa8)
- cryptoUtil: export getRandomUserSpecificIdHex (47d1071)
- db: export db & document (331392c)
- dependencies: documentation version not found (36c8c03)
- env: use env variables ❓ (12ae46d)
- errors: typo (eababa5)
- file: reject promise on upload error (581587b)
- files: append mode (5f0610b)
- files: cancel download (647915e)
- files: cancel upload queue (ff66852)
- files: cancel upload queue (4ae0c26)
- files: canUploadFileSize calculated incorrectly (cb32649)
- files: changed files to be shared only in chat, removed file counter (7c66432)
- files: close share dialog after files are shared (addf8a2)
- files: correct shared file props deserialization (b47d055)
- files: deleted files correctly removing from the list (e0da6bd)
- files: exists is a promise (67c3692)
- files: exists is a promise (9c52ea5)
- files: file up/download snackbars (7bdb76b)
- files: fix file counter not clearing under certain circumstances (520f582)
- files: fix file update logic (a944f2b)
- files: fix uploaded files being stuck in 'processing' state sometimes (4b98a62)
- files: make most recent files always be on top (725a309)
- files: new sharing api (b7fd43b)
- files: no systemWarnings when file upload is cancelled (d6b79e6)
- files: notice when upload “queue” is consumed (63dbb20)
- files: notification for fast uploads (9911a6d)
- files: owner displaying properly (4fd6df8)
- files: owner username was empty if it was user's own file (7506b6b)
- files: pace file sharing (533ca03)
- files: prevent updating file kegs that were loaded initially, also removes extra re-encrypt attempt (b80f8bb)
- files: progress bar fix (37536ca)
- files: proper selection and search logic (4df190b)
- files: re-sharing keg deleted by recipient works now (d96c20d)
- files: read queue>1 corrupts files (8525c6e)
- files: restore query changes (972230f)
- files: safer file list loading (771a777)
- files: small fixes (b8025b6)
- files: support s3 way of handling out of range requests (1633b91)
- files: switch file store to new query api (f82720d)
- files: update shareable state after upload (c164db9)
- files: upload fix (45f9a2e)
- fs: generate unique file path (f3320d9)
- ghost: attach signature (4176b88)
- ghost: do not assume ghost frontend url will have slash in the end (7b13c6f)
- ghost: expiry handling (8bfab33)
- ghost: fix fileIDs when attaching files (aac6c68)
- ghost: include signing key in ciphertext (03ada83)
- ghost: load ghost properties + revoke (40d326b)
- ghost: message preview (3e95c58)
- ghost: passphrase initialization (3e7aa24)
- ghost: remove afterLoad (39f6f28)
- ghost: replace old clock with new clock (2a532be)
- ghost: revoke (f7ff781)
- ghost: use moment (967cb15)
- ghosts: frontend url + debug (5742a5c)
- ghosts: if there are no ghosts, selectedId is unset (0606869)
- ghosts: if there are no ghosts, selectedId is unset (d9de688)
- ghosts: load properties from kegs properly (2f11359)
- interface: do not export icebear db (a5edcca)
- ios: add Uint8Array.slice polyfill for ios (2d0e7a5)
- kegs: chatbootkeg (842b502)
- kegs: don't fail evrything for the sake of one corrupted keg (660f30d)
- kegs: failsafe keg version increment (0b23ebe)
- kegs: fixed broken plaintext keg save (80fb547)
- l18n: forgot one (e627ce7)
- login: enable cehcking for passcode even when authKeys are loaded from cache (bc26bb3)
- login: fill keys on login (ea5a4df)
- login: load profile, then store last auth’d (cef1e7c)
- login: relogin process hangs if server forcibly closes the connection during login (e6f0128)
- login: theoretical support for user firstname on return (eeb1883)
- message: don’t check mentions if empty text (ed1efc8)
- message: make sure to clear message.files on deserialization (ff689cb)
- migrator: fix migration crypto (3d8246e)
- mobile: fix for android javascriptcore subarray (15d4237)
- mobile: unicode literal (6ca2041)
- models: add KegDB.toJSON to avoid cycles (#25) (da68adb)
- net: fix onceAuthenticated event, that wasn't actually firing (7fccbac)
- passcode: clean up test cases (8ce23da)
- passcode: return hasPasscode back (e8cd149)
- passphrases: dictionary collection (969bf5f)
- passphrases: spaces (800b406)
- perf: disable verifyKegSignature for now (36351f4)
- profile: fix primary address confirmation fact not updating (35bd444)
- profile: notify user when they try to add confirmed email (3cf80cc)
- profile: primary address loading correctly (1586fdd)
- profile: remove readonly fields (c6973d2)
- profile: trim user's names on save (4280bae)
- queries: file & ghost deleted: ‘false’ -> false (11c295c)
- quota: fix quota not updating (81e3241)
- quota: quota percent converted to number (4ffaba3)
- receipt: switch receipts to named kegs, deprecate 'receipt' type, add 'read_receipt' instead (a662bc7)
- receipts: don't load deleted receipts (8d3dce6)
- receipts: fix receipts after refactor (e00b935)
- receipts: less requests and proper handling of deleted receipts (8811568)
- search: remember search query (294b596)
- security: use payload as a source of truth for message attachments (a4c20ef)
- security: username spoof protections (c85c20c)
- serverWarning: restore token (d23a10f)
- settings: save settings (7c734ec)
- settings: settings keg properties renamed on server (ff5700e)
- sign: typo (6b379f1)
- socket: remove potentially harmful reset function (a5d34c5)
- socket: socket.io import fix (6d5d117)
- socket: upate state on disconnect - order (e7ebd94)
- socket: update state on disconnect (33fdd7e)
- sounds: improve receive sound notification logic (2f28619)
- stability: reset socket on login error (9e842b4)
- systemWarnings: support shift (8dd2e35)
- tinydb: don't decrypt empty values (d46d8ef)
- tinydb: guard key parameter (3dde898)
- tinydb: scope system db file name so it won't conflict with any username (01e3341)
- tofu: better make it observable (d7157a8)
- tofu: fixed tofu validation (913d8c9)
- tofu: tofu verification fix (1c27aa8)
- tracker: safe update tracker handler calls (e615291)
- upload: one-chunk files properly report lastChunk flag (fd087b2)
- user: kegKey must have been renamed to overrideKey accidentally (ad63ef0)
- user: pad passhprase in serializeAuthData (#22) (1058d1d)
- util: safari support for data view (e0bc148)
- ux: message grouping interval reduced to 10 minutes (f0f8252)
- validation: … actually throttle… (76109b3)
- validation: allow action to return a message (5cded0c)
- validation: correctly parse throttled requests (70c26cb)
- validation: fix error message trigger (e5650d0)
- validation: fix name — empty name is ‘’ (8079ebc)
- validation: handle undefined string (eb328c3)
- validation: more legible throttled call (e77ef57)
- validation: refactor (c603068)
- validation: refactor validation so it doesn't cache bad results (9c83acf)
- validation: remove timeout (564ce7b)
- validation: require + value equality (137d2e9)
- validation: return true (9d0b142)
- validation: scope fix (4ad18e1)
- no resets when connected (951e088)
- validation: throttle server calls (d746969)
- account for minCollectionVersion weirdness (01b7a9b)
- amount of chats to load after favs (80c4348)
- catch passcode error w passphrase (bb93c6b)
- chatName (9e818e1)
- contact import (6ffb23f)
- contact lookup spam at login (b89c97a)
- contact sorting (dfc645a)
- file blob download retry (18811e3)
- limit retry counts of file remove (b61b286)
- make sure named kegs always have allowEmpty flag (6af2132)
- new file sharing (b1fd378)
- validation: undefined for pending requests (3e3cfe9)
- quick fix (b0c8d02)
- receipt verification (6f7c6df)
- ups (f239923)
- validation: throttling, again (557b162)
- validation: translation strings (c84b172)
- validation: uniform type (f417d6d)
- warnings: don't display server warning with invalid key (3662090)
- warnings: failsafe server warning clear (756e47f)
- warnings: fix duplicates and late subscription (d8be158)
- warnings: fix server warnings not showing (4ff734f)
- warnings: prevent duplicate server warnings to appear on bad connections (be8f933)
- warnings: server warnings constructor typo (7e2ac6f)
- warnings: show snackbars for longer (02b9437)
- warnings: small thinngs (fc86057)
- remove unused fs (5d4c8a5)
- small but mighty (aaa60b8)
- typo (2563930)
- update data read status based on user focus (18e209c)
- account: account delete reaction support (43548d3)
- account: deleteAccount properly handles errors, generates warnings, returns promise (e9821d7)
- auth: create account (3e3e93d)
- auth: encrypt/decrypt auth data with passcode (39370ad)
- auth: socket supports 'authenticated' event and state (c7e79b9)
- avatar: signing key hashing for avatar color (13b6775)
- avatars: avatars (e50f40c)
- chat: adaptive unread counter clear (7439525)
- chat: always load all updates in all chats (f3373cf)
- chat: canSendAck Ack spam prevention api (e82d87f)
- chat: chat header/rename support (7f320e6)
- chat: chat hide/upload support (5a3d0ff)
- chat: chat name prefers full names over usernames (f93d2f6)
- chat: chat watchlist - makes sure hidden chats only pop when there are meaningful changes in them(messages) (b03a4de)
- chat: chats start with automatic message (ec75a1a)
- chat: fav/hidden chats, smart chat list loading (682883f)
- chat: grouped messages calculation (ff60d91)
- chat: last message snippet computed (05b75b0)
- chat: limit amount of chats to load (6b63098)
- chat: message date separator support (b12366c)
- chat: new messages marker support (51aaa24)
- chat: preload most recent message (379aa20)
- chat: read receipts (90d0675)
- chat: retry support (076fab3)
- chat: sort chatlist on starring chats (300c29a)
- chat: store system message metadata in keg props (725e559)
- chat: tweak page size for more comfortable chat experience (5385583)
- chat: ui props on message (1909265)
- chats: chat store (0a79630)
- chats: dynamic chat sorting based on unread items (09833e9)
- chats: find a chat with existing participants (4477edd)
- chats: makes icebear aware about specific view client app is in to trigger receipts etc when appropriate (1fef546)
- chats: option to sort chats 'unread first' on/off (3846188)
- chatstore: chatStore.hidingChat property to prevent spam clicking on ui 'hide' button (0aea914)
- ci: add circle.yml (60a78a3)
- clock: dispose() for Clock (d3ef650)
- config: move chunk size to fs config (bf35b33)
- contact: contact model (abf1953)
- contact: contact whenLoaded function + load retry (78600ff)
- contact: Contact.usernameTag (c3fd2b3)
- contact: fullName property (6629f59)
- contact: fullNameLower property for search purposes (2fb6efb)
- contact: utility functions for contact loading (47a4153)
- contacts: add invited contact when they join (563faae)
- contacts: contacts support (06c5da4)
- contacts: contactStore.filter(token, [collection]) smart user search (59ecafe)
- contacts: contactStore.invite(email) (8b1dbb1)
- contacts: delete invite (d1c1ff3)
- contacts: import (782e031)
- core: deleted and blacklisted account support (13fff3e)
- core: most recently used [anything] support (9a02a9a)
- core: observable clock (329ed8f)
- crypto: add asymmetric key generation (2217ae3)
- crypto: add functions to pad/unpad passphrase (#11) (23b0b8e)
- crypto: add ghost key derivation & hash operations + tests (6692f88)
- crypto: add signing keys generation (e4715cb)
- crypto: add symmetric encryption (9131a82)
- crypto: assymetric shared key cache (868bbbe)
- crypto: cache keys (4edeef5)
- crypto: crypto keys module (ebfb37e)
- crypto: full public crypto with optimized functions (0befa8f)
- crypto: node PRNG support (f75d53a)
- crypto: own random bytes function (c5e6aa4)
- crypto: passphrase generator (f51603f)
- crypto: sign verify (9aa36b4)
- cryptoUtil: string to hex (2eee003)
- db: tests (9546808)
- digest: minimalistic digest (b2f8b6e)
- errors: handle 434 error (1f1284a)
- file: set shared state of the file (f588ea0)
- files: confirmation snackbar when sharing files from file tab (74fa954)
- files: custom filename (cae5ff6)
- files: delete cached file (8129dfe)
- files: disable sharing of incomplete files (16241e9)
- files: download (fb2f111)
- files: download automatic resume (5ff4b0f)
- files: drop to chat (7f054c5)
- files: extend file store with selection functions and props (9f2c0f3)
- files: failsafe logic (21c9776)
- files: file sharing (c7a2d54)
- files: file upload resume (c7dc806)
- files: get cache list (e692779)
- files: name filter/search support (ba29ad5)
- files: prevent uploading files over quota (6c36225)
- files: rename api (e772c24)
- files: return file keg for uploadAndShare (2ff8169)
- files: return file keg for uploadAndShare (f341a43)
- files: selected files counter (808d59e)
- files: shareable files support functions (4c5df90)
- files: support deleteAfterUpload flag on chats (e56ff8e)
- files: unread counter (28c14bb)
- files: upload to chat (4fa9545)
- ghost: attach files (afb5808)
- ghost: sort, to be re-defined as per design (?) (2ab1859)
- helpers: dynamic map array (962cad7)
- keg: loading/saving observable state for base Keg (955f014)
- keg: prop support (f469809)
- kegs: SyncedKeg - new class for easy use of synced named kegs (62d8e4f)
- legacy: legacy contact import (be9f9d7)
- lib: check file owner for file sharing (47512e4)
- lib: export FileNonceGenerator (9d5a8b0)
- lib: file name utilities (b8db9cb)
- lib: file name utilities (da6ac91)
- lib: passcode validation (439cd77)
- lib: queue timeout (621ea5c)
- lib: validation (7bcdcac)
- login: don't derive passcode if authKeys are cached (50efb48)
- login: lastAuthenticated (b70ce84)
- login: login with passcode (83a71eb)
- login: save passcode (0a3e973)
- message: add message (2a3bdc5)
- message-kegs: load all (962fa62)
- messaging: ack message support (e0e61b0)
- messaging: incoming chat (5b44aec)
- messaging: lookup by email (eab30a6)
- migration: ability to generate publicKeyString for tests (89eafb9)
- migration: legacy accounts migrator (35ff0ee)
- mobile: add helper methods for mobile fs (540a97a)
- mobile: add passcode existence check (e37db1a)
- net: no more hanging requests (69ece4a)
- network: add connected observable (64216ee)
- network: handle throttling (358e024)
- passcode: persist skipping passcode (376e3fa)
- paywall: paywall errors via systemWarnings (9e266be)
- profile: email editor support (530e01c)
- profile: email update (d45dcb5)
- profile: profile load/save (042dfa3)
- props: props support for kegs (bc0b2d6)
- queue: error result support for queue tasks (91fef6c)
- quota: quota helpers (fd9257e)
- quotas: methods to check for quotas (1a0b9af)
- quotas: quotas keg support (d879019)
- react-native: replace crypto with shim (9852e9e)
- receipts: finalized (4d5d0ec)
- receipts: remove duplicate receipt kegs if any (08fd6ba)
- retry: failsafe retry with increasing interval and retry count limit (a566780)
- security: identity fingerprint support (b47c05f)
- security: use safer file extension routine (182048d)
- settings: promo email newsletter setting (92d660c)
- settings: settings keg support (8957eff)
- sharing: new keg sharing logic (9ec89d1)
- sign: encrypted keg signing (1662a71)
- signin: working sign in (3764086)
- signup: fully failsafe signup process (18c7dd5)
- socket: add socket subscriptions (21e4a96)
- socket: prevent /auth/* socket calls on not authenticated connection (89eeb4c)
- socket: socket reconnect information goodies (cb21345)
- sounds: send-receive sounds (8a83945)
- stability: action retry helper (22a7d7e)
- stability: fail-safe profile loading (84cb4a9)
- storage: add storage injection (4b2b4ee)
- storage: TinyDb encryption (3edc39f)
- sync: complete and new collection version contract compatible SyncedKeg (3396c4f)
- systemWarning: expand serverWarning to be more generic (a300a23)
- tinydb: getAllKeys support (4020df5)
- tinydb: support removing keys (18cc0d2)
- tofu: flag contacts (41be5cc)
- tofu: tofu (f26411c)
- ui: expand systemWarnings to support global errors (2b7855f)
- ui: extended preview for ghost body (94aa85a)
- ui: extended preview for ghost body (2f9e9b3)
- ui: letter function for contact (9641940)
- ui: show email confirmation sent snackbar when adding new email (#13) (cda7035)
- ui: skylar formatted fingerprint (1bc9145)
- ui: skylar formatted fingerprint (22480aa)
- ui: skylar formatted fingerprint (f9c31dc)
- workers: make sign detach and verify async (9ba2fb8)
- add secureWithTouchID observable (#24) (49ce578)
- ui: validation export for login username (6936b1a)
- updates: file store keg update support (b616a77)
- updates: keg updates support (71b01dd)
- user: account migration (7f37a90)
- user: autologinEnabled observable (9e127ed)
- user: current user export for modules that can't require User class (9182887)
- user: delete account api (ddc4a36)
- user: self-updating quota and profile data (8d0c540)
- user: server warnings (5a627f0)
- user: silent legacy account migration (b84c96f)
- util: observable timer to make timer coutners (f5563ee)
- util: prombservable - promise wrapper for observable (8168ac9)
- validation: add ability to reset validation state (9d8150a)
- validation: add value equality + docs (e6d9349)
- devicetokens (#14) (56ba6eb)
- support for desktop notifications (#12) (6ea719c)
- time store (1d36f8b)
- validation: login validation functions (1d1beae)
- validation: refactor (dd456fd)
- validation: refactor validation a bit (290b5ba)
- warnings: custom action support for warning buttons (efb4545)
- warnings: dismiss callback support for severe warnings (24ee5fd)
- chat: async message decryption (9a0a97f)
- chat: don't try to send receipts when not needed (2f1fa5c)
- chat: effective initial chat list loading (2edceb5)
- chat: send operation improved to avoid jitter on render (8cfc1d9)
- chatlist: chatlist optimisation (f96d0b6)
- crypto: scrypt proxy for worker implementation (ab749d3)