kaichaosun
cbcf5e3eb6
feat: abstract double ratchet traits
2026-03-27 19:18:55 +08:00
kaichaosun
4cb2ec1608
feat: abstract storage trait
2026-03-27 18:00:39 +08:00
kaichaosun
d580c0ac75
chore: fix conversation type not used
2026-03-27 16:01:21 +08:00
kaichaosun
66c2abe6de
chore: merge latest main
2026-03-27 15:14:35 +08:00
kaichao
8cddd9ddcf
refactor: use new styling for conversations crate without mod.rs ( #72 )
...
* refactor: use new styling for conversations crate without mod.rs
* refactor: remove put crate for identity types
2026-03-27 10:23:33 +08:00
Jazz Turner-Baggs
9a94f9a6d6
Flatten Repos ( #70 )
...
* move to “crates” style folder
* Update workspace
* clear crate names
* Rename crate folders based on feedback
* Use workspace dependencies instead of paths
* Move updated files from core
2026-03-24 18:21:00 -07:00
kaichao
daeecbd679
Persist identity ( #67 )
...
* feat: storage for conversations
* fix: db types conversion
* feat: run migrations from sql files
* feat: persist identity
* fix: revert double ratchet storage refactor
* fix: clean
* refactor: use result wrapper for ffi
* refactor: uniform storage error into chat error
* fix: zeroize identity record
* fix: zeroize for secret keys in db operations
* fix: transactional sql migration
* fix: remove destroy_string
* refactor: inline identity record name clone
2026-03-25 08:45:22 +08:00
kaichaosun
44949b0043
feat: remove conversation store
2026-03-13 10:38:00 +08:00
kaichaosun
bc9397d2e0
feat: wire with the double ratchet storage
2026-03-13 10:30:45 +08:00
kaichaosun
330059fd2d
feat: persist conversation store
2026-03-13 10:15:06 +08:00
kaichaosun
3db9210ac3
chore: remove in memory hashmap for ephemeral keys
2026-03-12 16:22:51 +08:00
kaichaosun
5d87b1d19a
feat: db storage for inbox ephermeral keys
2026-03-12 16:17:48 +08:00
kaichaosun
10a403e6fa
fix: remove destroy_string
2026-03-02 12:06:45 +08:00
kaichaosun
030ab475be
fix: transactional sql migration
2026-03-02 11:58:26 +08:00
kaichaosun
c3e5f361bb
fix: zeroize for secret keys in db operations
2026-03-02 11:58:26 +08:00
kaichaosun
0e62c44b7e
fix: zeroize identity record
2026-03-02 11:58:26 +08:00
kaichaosun
fdacfae108
refactor: uniform storage error into chat error
2026-03-02 11:58:26 +08:00
kaichaosun
3673d730f3
refactor: use result wrapper for ffi
2026-03-02 11:58:26 +08:00
kaichaosun
7019b04ccb
fix: clean
2026-03-02 11:58:26 +08:00
kaichaosun
3a9ddadc88
fix: revert double ratchet storage refactor
2026-03-02 11:58:25 +08:00
kaichaosun
37eb2749b2
feat: persist identity
2026-03-02 11:58:25 +08:00
kaichaosun
f4c08bd048
feat: run migrations from sql files
2026-03-02 11:58:25 +08:00
kaichaosun
e099d5fd15
fix: db types conversion
2026-03-02 11:58:25 +08:00
kaichaosun
f3aa5d5cf0
feat: storage for conversations
2026-03-02 11:58:24 +08:00
osmaczko
d006f20bce
fix(nim-bindings): add all-endpoints test and fix installation_name ABI ( #66 )
...
Add nim-bindings/tests/test_all_endpoints.nim which imports bindings
directly and calls every FFI proc, forcing the linker to include all
symbols. This catches link-time and runtime issues that the pingpong
example missed because unused symbols were optimised out.
Running the new test revealed an ABI mismatch in installation_name:
the Rust function used an explicit out-parameter but ReprCString has
only flat fields, so Nim emits it as a C return value.
CI now runs nimble test next to nimble pingpong.
2026-02-28 21:03:55 +01:00
Jazz Turner-Baggs
1158865bf2
feat: ListConversations ( #60 )
...
* Add function to get available conversations_ids
* Update bindings
* linter fix
* remove dynlib reference
* destructor fix
2026-02-28 03:16:10 -08:00
osmaczko
fa79b1c79c
chore(nim-bindings): replace dynlib dlopen with plain importc ( #61 )
...
* chore(nim-bindings): replace dynlib dlopen with plain importc
The dynlib pragma hard-coded a library path and resolved it via dlopen() at
runtime, preventing static linking and forcing a specific load-time path.
Using bare {.importc.} lets consumers choose: link liblibchat dynamically
at link time (--passL:-llibchat) or link it statically into their binary.
* Rust -> Nim ABI (#62 )
* Use correct build hook
* force sret like return from rust code for nim compatibility
* Fix target mismatch
* Update usages
* ci: add nim-bindings-test
* fix(nim-bindings): fix ABI mismatch in destroy_* FFI functions and add defer-based cleanup
Nim's C backend silently transforms large struct parameters (>16 bytes) into
pointer parameters when calling importc functions. The destroy_* functions were
declared taking T by value in Rust, but Nim always passed &T — causing Rust to
read garbage from the stack on x86-64 (SIGILL on CI) while accidentally working
on ARM64 macOS due to that ABI coincidentally also using pointers for large structs.
Fix by changing all destroy_* functions to take &mut T and using drop_in_place,
which is the correct idiom for dropping a value through a pointer.
On the Nim side, replace scattered manual destroy calls with defer, which
guarantees cleanup on all exit paths and prevents use-after-destroy bugs.
---------
Co-authored-by: Jazz Turner-Baggs <473256+jazzz@users.noreply.github.com>
2026-02-25 20:09:55 +01:00
Jazz Turner-Baggs
960bb195a1
Update crate name ( #59 )
2026-02-22 08:24:10 +02:00
Jazz Turner-Baggs
eb941387df
Add Installation name ( #58 )
...
* Add Identity name
* Update Context to accept a name
* Change constructor in bindings
* Add name retrieval to bindings
* Update constructor string type
* Remove uneeded files
* rename functions for symmetry
2026-02-19 17:25:42 -08:00
osmaczko
a9ca4ffb7d
chore: expose isNewConvo property ( #57 )
2026-02-18 20:01:47 +01:00
Jazz Turner-Baggs
95ddce9161
Key types ( #56 )
...
* Add generic SymmetricKey container
* Rename SecretKey to SymmetricKey32
* Update SymmetricKey usage
* Add PublicKey
* Update PublicKey uses
* Add PrivateKey
* Replace StaticSecret with PrivateKey
* Fix imports
* Remove InstallKey from constructors
* Final integration
* lint fixes
* Fixups
2026-02-18 09:29:33 -08:00
Jazz Turner-Baggs
3b69f946fd
PrivateV1 Convo Ids ( #54 )
...
* Add conversation_ids for privateV1
* Skip handling of unknown payloads
* Tag initial ContentData as new
* Add Integration test
* truncate convo_id to size
* Clippy fixes
* cleanup
* Apply suggestion from @osmaczko
Co-authored-by: osmaczko <33099791+osmaczko@users.noreply.github.com>
* Apply suggestion from @osmaczko
Co-authored-by: osmaczko <33099791+osmaczko@users.noreply.github.com>
* Linter fixes
---------
Co-authored-by: osmaczko <33099791+osmaczko@users.noreply.github.com>
2026-02-11 14:10:21 -08:00
osmaczko
57fe656728
feat: update introduction bundle encoding ( #43 )
...
closes : #27
2026-02-11 19:51:22 +01:00
Patryk Osmaczko
cd737ea058
fix: make ci checks pass
2026-02-10 19:45:00 +01:00
Aleksey
c5f9994c9e
feat: add ci checks
...
* base ci add
* Remove .DS_Store files
* Add .DS_Store to gitignore
* remove master & develop, kept only stable in matrix
Restrict CI workflow to only the main branch for pushes and pull requests.
* Update .github/workflows/ci.yml
Co-authored-by: osmaczko <33099791+osmaczko@users.noreply.github.com>
* Update .github/workflows/ci.yml
Co-authored-by: osmaczko <33099791+osmaczko@users.noreply.github.com>
---------
Co-authored-by: osmaczko <33099791+osmaczko@users.noreply.github.com>
2026-02-10 14:40:01 +01:00
Jazz Turner-Baggs
71f7b8a485
FFI Integration fixes ( #48 )
...
* Make conversation store easier to use
* fix: Bug in Inbox id’s
* Clean up warnings
* Add DH decryption for Inbox
2026-02-09 09:55:58 -08:00
Jazz Turner-Baggs
e3e3097947
Safer FFI Migration ( #47 )
...
* Use safer_ffi for all functions
* Clean up FFI docs and imports
* Update nim bindings
* Binding Memory Management
* Update tests
2026-02-09 06:37:47 -08:00
dependabot[bot]
45b54bf983
Build(deps): bump bytes from 1.11.0 to 1.11.1 ( #41 )
...
Bumps [bytes](https://github.com/tokio-rs/bytes ) from 1.11.0 to 1.11.1.
- [Release notes](https://github.com/tokio-rs/bytes/releases )
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md )
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.11.0...v1.11.1 )
---
updated-dependencies:
- dependency-name: bytes
dependency-version: 1.11.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-06 18:44:47 -08:00
Jazz Turner-Baggs
135347cdd0
Update Conversation handles over FFI ( #46 )
...
* Remove convo handles
* Remove convo_handle from docs
2026-02-06 08:58:23 -08:00
Jazz Turner-Baggs
1ce196e5ec
Implement handle_payload ( #44 )
...
* Implement handle_payload
* Cleanup handler for easier understanding
* Fixups
2026-02-06 08:41:12 -08:00
Jazz Turner-Baggs
97a1cf150a
Update content to use byte slice ( #45 )
2026-02-06 08:08:06 -08:00
Jazz Turner-Baggs
2a74066cd4
Remove unneeded traits and warnings ( #42 )
2026-02-06 07:24:13 -08:00
Igor Sirotin
989035a431
docs: rename apache license file
2026-02-04 13:49:54 +00:00
Jazz Turner-Baggs
d5c16f51de
Integrate DR into PrivateV1 ( #32 )
...
* Add crate
* Initialize session
* Add encrypt / decrypt
2026-02-03 15:17:45 -08:00
kaichao
74695877fa
Split storage crate to abstract database layer ( #30 )
...
* feat: shared storage crate
* chore: remove backup codes
* chore: remove feature gates
* chore: clean out of order demo
* chore: refactor create session
* chore: shorten error name
* chore: clean errors
* chore: remove table exist check
* chore: remove unused traits
* chore: remove unused functions.
* chore: use tempfile for examples
2026-02-03 09:39:02 +08:00
Igor Sirotin
7c580b5896
docs: added licenses ( #33 )
...
* docs: added licenses
* docs: fix licenses
2026-01-30 15:46:36 +00:00
Jazz Turner-Baggs
5a98258ff1
Implement Content::send_content ( #31 )
...
* Implement Content::send_content
* rename stamp fn
2026-01-29 08:36:18 -08:00
kaichao
10940321ff
Encode ratchet sate for serialization ( #20 )
...
* feat: costom encode for double ratchet
* chore: correct capacity
* chore: refactor reference
* chore: reader for parse bytes
* chore: extract reader
* chore: example with persist state.
* chore: update example
* chore: implement serde compatibility.
* chore: as_bytes
* chore: zerorize the secrec material
* chore: use as_types to return reference for static key.
* chore: extract example from basic demo
2026-01-29 09:19:52 +08:00
Jazz Turner-Baggs
1f0354f8e2
Add FFI functions for send_content and handle_payload ( #29 )
...
* Add api calls for handle_payload and send_content
* Add handle_payload and send_content to FFI
2026-01-28 10:50:41 -08:00
Jazz Turner-Baggs
1cb1ffc996
Nim FFI Wrapper for LibChat ( #25 )
...
* remove unneeded code
* Update comment style
* Update Nim side to support safer_ffi
* Fix Introduction from impl
* Updates
2026-01-28 10:38:08 -08:00