Nov 25, 8-9 AM (53)
Nov 25, 9-10 AM (52)
Nov 25, 10-11 AM (47)
Nov 25, 11-12 PM (51)
Nov 25, 12-1 PM (79)
Nov 25, 1-2 PM (59)
Nov 25, 2-3 PM (71)
Nov 25, 3-4 PM (46)
Nov 25, 4-5 PM (40)
Nov 25, 5-6 PM (32)
Nov 25, 6-7 PM (32)
Nov 25, 7-8 PM (54)
Nov 25, 8-9 PM (13)
Nov 25, 9-10 PM (30)
Nov 25, 10-11 PM (34)
Nov 25, 11-12 AM (27)
Nov 26, 12-1 AM (12)
Nov 26, 1-2 AM (12)
Nov 26, 2-3 AM (3)
Nov 26, 3-4 AM (4)
Nov 26, 4-5 AM (13)
Nov 26, 5-6 AM (4)
Nov 26, 6-7 AM (4)
Nov 26, 7-8 AM (29)
Nov 26, 8-9 AM (49)
Nov 26, 9-10 AM (84)
Nov 26, 10-11 AM (60)
Nov 26, 11-12 PM (86)
Nov 26, 12-1 PM (72)
Nov 26, 1-2 PM (67)
Nov 26, 2-3 PM (52)
Nov 26, 3-4 PM (59)
Nov 26, 4-5 PM (25)
Nov 26, 5-6 PM (28)
Nov 26, 6-7 PM (17)
Nov 26, 7-8 PM (29)
Nov 26, 8-9 PM (26)
Nov 26, 9-10 PM (25)
Nov 26, 10-11 PM (41)
Nov 26, 11-12 AM (35)
Nov 27, 12-1 AM (11)
Nov 27, 1-2 AM (3)
Nov 27, 2-3 AM (12)
Nov 27, 3-4 AM (5)
Nov 27, 4-5 AM (2)
Nov 27, 5-6 AM (7)
Nov 27, 6-7 AM (11)
Nov 27, 7-8 AM (31)
Nov 27, 8-9 AM (48)
Nov 27, 9-10 AM (42)
Nov 27, 10-11 AM (64)
Nov 27, 11-12 PM (43)
Nov 27, 12-1 PM (130)
Nov 27, 1-2 PM (27)
Nov 27, 2-3 PM (53)
Nov 27, 3-4 PM (50)
Nov 27, 4-5 PM (34)
Nov 27, 5-6 PM (31)
Nov 27, 6-7 PM (24)
Nov 27, 7-8 PM (10)
Nov 27, 8-9 PM (3)
Nov 27, 9-10 PM (7)
Nov 27, 10-11 PM (24)
Nov 27, 11-12 AM (21)
Nov 28, 12-1 AM (3)
Nov 28, 1-2 AM (2)
Nov 28, 2-3 AM (3)
Nov 28, 3-4 AM (11)
Nov 28, 4-5 AM (3)
Nov 28, 5-6 AM (30)
Nov 28, 6-7 AM (10)
Nov 28, 7-8 AM (20)
Nov 28, 8-9 AM (53)
Nov 28, 9-10 AM (52)
Nov 28, 10-11 AM (75)
Nov 28, 11-12 PM (49)
Nov 28, 12-1 PM (34)
Nov 28, 1-2 PM (17)
Nov 28, 2-3 PM (101)
Nov 28, 3-4 PM (23)
Nov 28, 4-5 PM (20)
Nov 28, 5-6 PM (8)
Nov 28, 6-7 PM (29)
Nov 28, 7-8 PM (69)
Nov 28, 8-9 PM (2)
Nov 28, 9-10 PM (6)
Nov 28, 10-11 PM (26)
Nov 28, 11-12 AM (12)
Nov 29, 12-1 AM (9)
Nov 29, 1-2 AM (2)
Nov 29, 2-3 AM (0)
Nov 29, 3-4 AM (3)
Nov 29, 4-5 AM (4)
Nov 29, 5-6 AM (0)
Nov 29, 6-7 AM (1)
Nov 29, 7-8 AM (0)
Nov 29, 8-9 AM (2)
Nov 29, 9-10 AM (2)
Nov 29, 10-11 AM (7)
Nov 29, 11-12 PM (0)
Nov 29, 12-1 PM (8)
Nov 29, 1-2 PM (38)
Nov 29, 2-3 PM (14)
Nov 29, 3-4 PM (25)
Nov 29, 4-5 PM (11)
Nov 29, 5-6 PM (11)
Nov 29, 6-7 PM (12)
Nov 29, 7-8 PM (13)
Nov 29, 8-9 PM (7)
Nov 29, 9-10 PM (5)
Nov 29, 10-11 PM (21)
Nov 29, 11-12 AM (25)
Nov 30, 12-1 AM (2)
Nov 30, 1-2 AM (2)
Nov 30, 2-3 AM (4)
Nov 30, 3-4 AM (4)
Nov 30, 4-5 AM (2)
Nov 30, 5-6 AM (1)
Nov 30, 6-7 AM (0)
Nov 30, 7-8 AM (0)
Nov 30, 8-9 AM (2)
Nov 30, 9-10 AM (4)
Nov 30, 10-11 AM (6)
Nov 30, 11-12 PM (6)
Nov 30, 12-1 PM (34)
Nov 30, 1-2 PM (3)
Nov 30, 2-3 PM (7)
Nov 30, 3-4 PM (18)
Nov 30, 4-5 PM (13)
Nov 30, 5-6 PM (13)
Nov 30, 6-7 PM (6)
Nov 30, 7-8 PM (9)
Nov 30, 8-9 PM (31)
Nov 30, 9-10 PM (8)
Nov 30, 10-11 PM (27)
Nov 30, 11-12 AM (24)
Dec 01, 12-1 AM (5)
Dec 01, 1-2 AM (6)
Dec 01, 2-3 AM (5)
Dec 01, 3-4 AM (30)
Dec 01, 4-5 AM (7)
Dec 01, 5-6 AM (8)
Dec 01, 6-7 AM (12)
Dec 01, 7-8 AM (47)
Dec 01, 8-9 AM (27)
Dec 01, 9-10 AM (19)
Dec 01, 10-11 AM (47)
Dec 01, 11-12 PM (48)
Dec 01, 12-1 PM (65)
Dec 01, 1-2 PM (27)
Dec 01, 2-3 PM (27)
Dec 01, 3-4 PM (70)
Dec 01, 4-5 PM (49)
Dec 01, 5-6 PM (22)
Dec 01, 6-7 PM (20)
Dec 01, 7-8 PM (20)
Dec 01, 8-9 PM (8)
Dec 01, 9-10 PM (12)
Dec 01, 10-11 PM (28)
Dec 01, 11-12 AM (28)
Dec 02, 12-1 AM (33)
Dec 02, 1-2 AM (9)
Dec 02, 2-3 AM (10)
Dec 02, 3-4 AM (2)
Dec 02, 4-5 AM (4)
Dec 02, 5-6 AM (4)
Dec 02, 6-7 AM (4)
Dec 02, 7-8 AM (16)
Dec 02, 8-9 AM (11)
4,033 commits this week Nov 25, 2025 - Dec 02, 2025
chore(deps): bump wasmtime-wasi from 38.0.4 to 39.0.1 in /hermes
Bumps [wasmtime-wasi](https://github.com/bytecodealliance/wasmtime) from 38.0.4 to 39.0.1.
- [Release notes](https://github.com/bytecodealliance/wasmtime/releases)
- [Changelog](https://github.com/bytecodealliance/wasmtime/blob/v39.0.1/RELEASES.md)
- [Commits](https://github.com/bytecodealliance/wasmtime/compare/v38.0.4...v39.0.1)

---
updated-dependencies:
- dependency-name: wasmtime-wasi
  dependency-version: 39.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
chore(deps): bump stringzilla from 4.2.3 to 4.4.0 in /hermes
Bumps [stringzilla](https://github.com/ashvardanian/stringzilla) from 4.2.3 to 4.4.0.
- [Release notes](https://github.com/ashvardanian/stringzilla/releases)
- [Commits](https://github.com/ashvardanian/stringzilla/compare/v4.2.3...v4.4.0)

---
updated-dependencies:
- dependency-name: stringzilla
  dependency-version: 4.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
chore(deps): bump wasmprinter from 0.240.0 to 0.242.0 in /hermes
Bumps [wasmprinter](https://github.com/bytecodealliance/wasm-tools) from 0.240.0 to 0.242.0.
- [Release notes](https://github.com/bytecodealliance/wasm-tools/releases)
- [Commits](https://github.com/bytecodealliance/wasm-tools/commits)

---
updated-dependencies:
- dependency-name: wasmprinter
  dependency-version: 0.242.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
chore(deps): bump wit-bindgen from 0.46.0 to 0.48.1 in /hermes
Bumps [wit-bindgen](https://github.com/bytecodealliance/wit-bindgen) from 0.46.0 to 0.48.1.
- [Release notes](https://github.com/bytecodealliance/wit-bindgen/releases)
- [Commits](https://github.com/bytecodealliance/wit-bindgen/compare/v0.46.0...v0.48.1)

---
updated-dependencies:
- dependency-name: wit-bindgen
  dependency-version: 0.48.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
chore(deps): bump criterion from 0.7.0 to 0.8.0 in /hermes
Bumps [criterion](https://github.com/criterion-rs/criterion.rs) from 0.7.0 to 0.8.0.
- [Release notes](https://github.com/criterion-rs/criterion.rs/releases)
- [Changelog](https://github.com/criterion-rs/criterion.rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/criterion-rs/criterion.rs/compare/criterion-plot-v0.7.0...criterion-v0.8.0)

---
updated-dependencies:
- dependency-name: criterion
  dependency-version: 0.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
feat(hermes): Add the Pre-Publish step to DocSync (#705)
* feat: implement doc-sync channel::post API for issue #628

- Add channel::post(document_bytes) API as requested
- Integrate hermes-ipfs library for IPFS operations
- Add HTTP endpoints for testing (/api/doc-sync/*)
- Configure HTTP gateway routing
- Implement IPFS add, pin, and PubSub publish workflow

* feat: implement doc-sync channel::post API for issue #628

- Add channel::post(document_bytes) API as requested
- Integrate hermes-ipfs library for IPFS operations
- Add HTTP endpoints for testing (/api/doc-sync/*)
- Configure HTTP gateway routing
- Implement IPFS add, pin, and PubSub publish workflow

* hermes ipfs version

* fix: enable WASM compilation for doc-sync module and add host stubs

  WASM compilation fixes:
  - Made tokio runtime features conditional (rt-multi-thread only for non-WASM)
  - Added separate WASM/native implementations using futures::executor for WASM
  - Conditionally compile Runtime usage and block_on calls

  Host implementation:
  - Replaced panicking todo!() with warning messages and stub return values
  - Added Resource stub creation for SyncChannel::new()
  - Functions now print warnings but don't crash runtime

  This allows the doc-sync module to compile for wasm32-wasip2 targets and
  run without panicking, though full functionality requires proper host
  implementation.

* Remove all cfg attributes and consolidate WASM/non-WASM code paths into single implementations using futures::executor. Simplify HTTP handlers and reduce complexity to clearly
   demonstrate the 4-step workflow.

* refactor(doc-sync): simplify for demo workflow

   Remove conditional compilation, OnceLock pattern, and unnecessary complexity to clearly show the 4-step IPFS PubSub workflow.

* refactor(doc-sync): use WIT bindings directly for demo

  Replace async hermes-ipfs library with direct WIT function calls (file_add, file_pin, pubsub_publish). Remove conditional compilation and async dependencies to simplify the 4-step
  workflow demo.

* refactor(doc-sync): use WIT bindings directly for demo

  Replace async hermes-ipfs library with direct WIT function calls (file_add, file_pin, pubsub_publish). Remove conditional compilation and async dependencies to simplify the 4-step
  workflow demo.

* refactor(doc-sync): integrate with PR #691 subscription flow

  Replace async hermes-ipfs library with synchronous WIT bindings (file_add, file_pin, pubsub_publish, pubsub_subscribe). Add actual channel subscription in SyncChannel::new() and
  document complete pub/sub flow with PR #691 infrastructure.

  Changes:
  - Use WIT IPFS functions directly instead of async library
  - Call pubsub_subscribe() to register DocSync subscriptions
  - Document how on_new_doc events are triggered by PR #691
  - Remove conditional compilation and async dependencies
  - Show clear 4-step workflow: add → pin → validate → publish

* docs(doc-sync): document PR #691 integration requirements

  Add comprehensive comments explaining PR #691 requirement for subscription event routing. Document the complete pub/sub flow, what works now vs what needs PR #691, and how to
  integrate when it merges

* fix(doc-sync): import GuestSyncChannel trait and clarify PR #691 comment

  Fix compilation error and clarify that publishing to PubSub works now; PR #691 is only needed to route incoming messages to event handlers.

* update docs

* refactor(doc-sync): Focus module on publishing workflow only

  Remove subscription logic and simplify documentation. Module now
  demonstrates only the 4-step publishing workflow: file_add, file_pin,
  pre-publish validation, and pubsub_publish.

* fmt

* refactor(doc-sync): Move post logic to host

  Execute the 4-step publishing workflow (file_add, file_pin, pre-publish,
  pubsub_publish) on the host side instead of in the WASM module. Reduces
  boundary crossings from 6 to 2 for better performance.

* fmt

* fmt

* fix(doc-sync): Fix compilation errors

  - Fix SyncChannel resource import and usage
  - Update channel::post() to call host implementation correctly

* refactor(doc-sync): Replace eprintln with tracing

  Use tracing macros (info/warn/error) instead of eprintln for logging
  in doc-sync host implementation.

* refactor(doc-sync): Replace eprintln with tracing

  Use tracing macros (info/warn/error) instead of eprintln for logging
  in doc-sync host implementation.

* fmt

* refactor(doc-sync): Extract constants and improve error logging

  - Add DOC_SYNC_TOPIC and DOC_SYNC_CHANNEL constants
  - Add error logging to id_for() method

* refactor(doc-sync): Improve error logging and remove redundant conversions

  - Log actual error details instead of discarding with
  - Remove redundant .to_string() on CID response
  - Add error logging for failed post operations

* fmt

* fmt

* refactor(doc-sync): Replace stub implementations with todo!()

  Replace placeholder implementations with explicit todo!() markers:
  - id_for: Remove incorrect file_add call with side effects
  - sync-channel::new: Remove placeholder resource ID (42)
  - sync-channel::close: Remove stub return value

  These are out of scope for post() implementation and should panic if
  called.

* Update hermes/bin/src/ipfs/task.rs

Co-authored-by: Rafał Chabowski <[email protected]>

* docs(doc-sync): Move crate docs to README and remove duplication

  Move module documentation from lib.rs to a crate-level README.md for better visibility and remove duplicated content between crate-level and channel module docs.

* docs(doc-sync): Move crate docs to README and remove duplication

  Move module documentation from lib.rs to a crate-level README.md for better visibility and remove duplicated content between crate-level and channel module docs.

* fix(doc-sync): Fix markdown linting errors in README

  Split long sentences to one per line and ensure lines stay under 132 character limit.

* fix(doc-sync): Replace todo!() with placeholder implementations

  Replace 5 todo!() macros in doc_sync host with minimal placeholder
  implementations to pass clippy lint checks. Functions now return
  empty/default values instead of panicking.

* fix(doc-sync): Resolve all clippy pedantic lints

  Fixes documentation formatting, format string inlining, unnecessary value passing, wildcard imports, and missing error documentation to satisfy clippy::pedantic requirements

* Log pin result

* IPFS file add operation now also returns CID

* Fixes after the merge

* Remove the pin step

* Remove the pin step

* Cleanup

* Cleanup

* DHT provide on the host side

* Wire the `IpfsCommand::DhtProvide` command

* Add `is_pre_publish_completed()`

* Implement basic timeout

* Implement DHT get providers

* Use proper peer ID

* Update test component

* Temp switch to `main` branch in libs

* Cleanup

* Split `fn post()` into auxiliary functions

* Update `hermes-ipfs`

* Update comment

* Fix typo

* Fix typo

* Revert unnecessary comment change

* Use correct error in `dht_provide()`

* Use proper error in `IpfsCommand::DhtGetProviders()`

---------

Co-authored-by: cong-or <[email protected]>