- Added
list-filescommand 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_throttleconfig option, which adds a throttle delay between transmission of chunks. - Added
radio_addressconfig option, which hardcodes an address formycelito send responses to. - Added
RequestAvailableDagsAPI, 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, andcontrollercan now be controlled using theRUST_LOGenvironment variable. - Added additional debug logging around chunk sending and receiving.
- Added
DagExportedandDagExportFailedresponses toExportDagcommand. - Added
DagTransmissionCompleteresponse when a DAG has been completely transmitted.
- MTU is now an optional flag on
controller - Added
block_sizeas amyceliconfig option for controlling IPFS block size in file chunking - Changed default
block_sizeto 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_sizeconfig formyceli. - Added
ResumeTransmitDagandResumeTransmitAllDagsAPIs for resuming DAG transfers. - Added
SetConnectedandGetConnectedAPIs for setting connection state. - Brought in
iroh-unixfsasipfs-unixfs, which has been trimmed to focus on creation of DAGs and Blocks.
- Renamed
app-api-clitocontroller. - Updated default block size to 256 bytes and generally improved handling of larger files in storage layer.
- Archived unused
car-utilityandcpp-transmit-exampleprojects. - 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
transportscrate withTransporttrait andUdpTransportimplementation. - Added PR test for verifying build of
myceliDocker image.
- Modified CI to produce release artifacts in .tar.gz format.
- Fixed
controllerto 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 betweenmyceliandkubo. - Added
RequestVersionAPI tomyceli. - Added
controllerto release artifacts generated by CI. - Locked rust toolchain to
1.68.1
- Added
mtuconfig parameter tomyceli. - Renamed
app-api-clitocontroller.
- Added integration tests for
myceliwhich get pretty close to end-to-end testing. - Added helper functions to
Messageenum for generating specific messages. - Implemented
TransmitBlockAPI for transmitting a single block. - Added retries to the
TransmitDagAPI 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
shipperstruct tomyceliwhich consolidates all data exchange code and adds state necessary to support timeout-based retries during DAG transmission. - Extracted
myceliconfig 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
myceliin Docker.
- Reworked
mycelicrate a bit to expose internal library in binary crate. - Reworked
mycelito operate in the traditional multi-threaded fashion instead of using async. This included reworkingmyceli::Listenerto spawnshipperin a separate thread and pass along messages via channel. - Updated logging in the desktop
radio-serviceto usetracing. - Moved
transmit_dagandtransmit_blockfunctionality from handlers toshipper. - Updated docs/readme to reflect new
myceliconfiguration file.
- Removed the
TransmitFileAPI, all files to be transmitted should be imported and then transmitted to support retransmission of blocks.
- Added
validateforStoredBlockto leverage the validation functionality built intobeetle::iroh_unixfs::Block. - Added
local_storage::block::validate_dagwhich determines if a list ofStoredBlocks constitute a complete and valid DAG. - Implemented
ValidateDagAPI and addedValidateDagResponse. The unimplementedValidateBlockwas removed, asValidateDagcan also validate individual blocks. - Added CI workflows for running clippy and tests.
- Renamed
block-streamertomyceliandservertolistener. - Moved
StoredBlockand associated implementation/tests out of thestoragemod into ablockmod withinlocal-storage. - Reorganized the functionality in
block_streamer::serverto make functional testing much easier/possible. - Small refactor of
transmit_blocks.
- The
RequestDagandRequestBlockAPIs were removed, as they were essentially equivalent toTransmitDagandTransmitBlock. - Removed the
receivemode fromblock-streamer/myceli, as it was already covered by thelistener/serverfunctionality.
- Created a general chunking struct,
SimpleChunker, which handles chunking and assembly of any message of typeMessage. This includes a newMessageContainerstruct which is used in the chunking ofMessages. TheMessageContaineressentially becomes an IPLD block containing aMessage, which allows for verification using theCidon assembly. - The
GetMissingDagBlocksAPI is now implemented based on what is currently in storage. - Added a
local-storagecrate which exposes aStoragestruct used to store & retrieve blocks from sqlite. - Implemented
TransmitDagAPI for transmitting blocks from storage. - Modified receive functionality to use
local-storageinstead of streaming blocks to a file or storing incomplete blocks in-memory. - Implemented
ImportFileandExportDagAPIs for controllable importing/exporting files to & from storage. - Added a
listenflag to theapp-api-clifor receiving responses to transmitted API messages.
- Started tagging and versioning on roadmap milestones.
- Transmit and receive functionality has been modified to use the
SimpleChunkerfor the transfer of Blocks. All other API communication has been modified to use theSimpleChunkerfor API messages. - The
controlfunctionality in theblock-streamerserver has been renamed toserverto 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-shipfunctionality & 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_blocksfunctionality now correctly returns an error if the requestedcidhas no associated blocks (in that case we assume we haven't encountered that block yet). - Fixed several cases where unwraps would crash the
block-streameron errors. - Fixed a compile issue with the
app-api-cli