- Added
list-files
command to controller - Always send response to sender
- Compact message sequence number and increase its maximum
- output_format option for controller (support JSON for scripting with jq)
- Added
chunk_transmit_throttle
config option, which adds a throttle delay between transmission of chunks. - Added
radio_address
config option, which hardcodes an address formyceli
to send responses to. - Added
RequestAvailableDags
API, and association between DAGs and filename.
- MTU now maxes out at 3072. This max value is now used as the size of the receive buffer, fixing any MTU mismatch errors.
- Logging level for
myceli
,hyphae
, andcontroller
can now be controlled using theRUST_LOG
environment variable. - Added additional debug logging around chunk sending and receiving.
- Added
DagExported
andDagExportFailed
responses toExportDag
command. - Added
DagTransmissionComplete
response when a DAG has been completely transmitted.
- MTU is now an optional flag on
controller
- Added
block_size
as amyceli
config option for controlling IPFS block size in file chunking - Changed default
block_size
to 3072 bytes - Fixed cases where responses inside of dag transfer session weren't sent to original target address
- Added windowing to DAG transfers, and corresponding
window_size
config formyceli
. - Added
ResumeTransmitDag
andResumeTransmitAllDags
APIs for resuming DAG transfers. - Added
SetConnected
andGetConnected
APIs for setting connection state. - Brought in
iroh-unixfs
asipfs-unixfs
, which has been trimmed to focus on creation of DAGs and Blocks.
- Renamed
app-api-cli
tocontroller
. - Updated default block size to 256 bytes and generally improved handling of larger files in storage layer.
- Archived unused
car-utility
andcpp-transmit-example
projects. - Converted all crate dependencies to workspace dependencies, tightened version specificity, narrowed features when possible.
- Increase default MTU to 512 bytes to accommodate more realistic systems
- Move functions for fetching all DAG cids & blocks into storage layer
- Increase default file block size to 100kb for better performance when importing larger files
- Small revision to testing plan
- Added
transports
crate withTransport
trait andUdpTransport
implementation. - Added PR test for verifying build of
myceli
Docker image.
- Modified CI to produce release artifacts in .tar.gz format.
- Fixed
controller
to resolve addresses. - Standardize default addresses on
0.0.0.0
. - Added configurable listen address to
hyphae
. - Added configurable listen address to
controller
.
- Added
hyphae
, a block syncing bridge betweenmyceli
andkubo
. - Added
RequestVersion
API tomyceli
. - Added
controller
to release artifacts generated by CI. - Locked rust toolchain to
1.68.1
- Added
mtu
config parameter tomyceli
. - Renamed
app-api-cli
tocontroller
.
- Added integration tests for
myceli
which get pretty close to end-to-end testing. - Added helper functions to
Message
enum for generating specific messages. - Implemented
TransmitBlock
API for transmitting a single block. - Added retries to the
TransmitDag
API and timeout-based mechanism for retrying dag transmission, this included adding retry duration as a CLI arg tomyceli
. - Added protocol messages for requesting missing dag blocks, requesting transmission of dags & blocks, and retrying dag transmission.
- Added a basic Dockerfile for building and running
myceli
. - Added
shipper
struct tomyceli
which consolidates all data exchange code and adds state necessary to support timeout-based retries during DAG transmission. - Extracted
myceli
config values into config file with reasonable defaults. - CI based docker builds and binary releases.
- Basic general testing plan in testing/testing-plan.md.
- Added basic for for building/running
myceli
in Docker.
- Reworked
myceli
crate a bit to expose internal library in binary crate. - Reworked
myceli
to operate in the traditional multi-threaded fashion instead of using async. This included reworkingmyceli::Listener
to spawnshipper
in a separate thread and pass along messages via channel. - Updated logging in the desktop
radio-service
to usetracing
. - Moved
transmit_dag
andtransmit_block
functionality from handlers toshipper
. - Updated docs/readme to reflect new
myceli
configuration file.
- Removed the
TransmitFile
API, all files to be transmitted should be imported and then transmitted to support retransmission of blocks.
- Added
validate
forStoredBlock
to leverage the validation functionality built intobeetle::iroh_unixfs::Block
. - Added
local_storage::block::validate_dag
which determines if a list ofStoredBlock
s constitute a complete and valid DAG. - Implemented
ValidateDag
API and addedValidateDagResponse
. The unimplementedValidateBlock
was removed, asValidateDag
can also validate individual blocks. - Added CI workflows for running clippy and tests.
- Renamed
block-streamer
tomyceli
andserver
tolistener
. - Moved
StoredBlock
and associated implementation/tests out of thestorage
mod into ablock
mod withinlocal-storage
. - Reorganized the functionality in
block_streamer::server
to make functional testing much easier/possible. - Small refactor of
transmit_blocks
.
- The
RequestDag
andRequestBlock
APIs were removed, as they were essentially equivalent toTransmitDag
andTransmitBlock
. - Removed the
receive
mode fromblock-streamer/myceli
, as it was already covered by thelistener/server
functionality.
- Created a general chunking struct,
SimpleChunker
, which handles chunking and assembly of any message of typeMessage
. This includes a newMessageContainer
struct which is used in the chunking ofMessage
s. TheMessageContainer
essentially becomes an IPLD block containing aMessage
, which allows for verification using theCid
on assembly. - The
GetMissingDagBlocks
API is now implemented based on what is currently in storage. - Added a
local-storage
crate which exposes aStorage
struct used to store & retrieve blocks from sqlite. - Implemented
TransmitDag
API for transmitting blocks from storage. - Modified receive functionality to use
local-storage
instead of streaming blocks to a file or storing incomplete blocks in-memory. - Implemented
ImportFile
andExportDag
APIs for controllable importing/exporting files to & from storage. - Added a
listen
flag to theapp-api-cli
for receiving responses to transmitted API messages.
- Started tagging and versioning on roadmap milestones.
- Transmit and receive functionality has been modified to use the
SimpleChunker
for the transfer of Blocks. All other API communication has been modified to use theSimpleChunker
for API messages. - The
control
functionality in theblock-streamer
server has been renamed toserver
to better reflect it's general purpose "server-like" functionality. The code was also split up a bit to improve readability and error handling.
- Any transmit or receive functionality dealing directly with chunks of blocks has been removed, along with associated tests.
- The
block-ship
functionality & crate was no longer needed after general message chunking was introduced.
- The sqlite storage provider now correctly handles importing duplicate blocks without crashing.
- The
get_missing_cid_blocks
functionality now correctly returns an error if the requestedcid
has no associated blocks (in that case we assume we haven't encountered that block yet). - Fixed several cases where unwraps would crash the
block-streamer
on errors. - Fixed a compile issue with the
app-api-cli