github barrydeen/haven v1.2.0

latest releases: v1.2.2, v1.2.1
13 days ago

Changelog

Changelog

This release introduces a ton of new features long requested by Haven users.

Highlights

  • Multi-pubkey Support: Haven now supports multiple npubs (whitelisting).
  • Blacklisting: Added support for blacklisting specific public keys.
  • JSONL Backup and Restore: The backup system has been rewritten using a portable JSONL format. This includes support for manual commands (haven backup), specific relay exports, and periodic backups to the cloud. A brand new haven restore command has been introduced to import notes in JSONL format, compatible with Haven backups, as well as JSONL files generated by other relays and other Nostr tools.
  • WoT Depth and Refresh: The Web of Trust functionality now has a working configurable depth level, and a new periodic WoT refresh mechanism.

Features

  • e91b368 feat(access-control): add blacklist support
  • 5c64553 feat(access-control): enforce auth requirement for REQ chat relay
  • 986c21b feat(backup): add --from-cloud flag to restore backups from cloud
  • 83004f6 feat(backup): add --to-cloud flag to upload backups to cloud storage
  • 5d44388 feat(backup): remove deprecated aws and gcp backup providers
  • f0a6343 feat(backup): unify backup and restore commands with portable JSONL
  • b844c9e feat(config): add user-agent for relay requests (#117)
  • 3ccce6e feat(config): make blastr timeout configurable
  • 5d5bd1f feat(export): add command to export relay data to compressed jsonl
  • 501c6b6 feat(goreleaser): enable automatic prerelease configuration
  • 9cef5ca feat(import): exit after import completes
  • 53000db feat(import): skip events from blacklisted public keys
  • c89c437 feat(jsonl): add import and export commands for relay data
  • b5e7058 feat(jsonl): ensure deterministic export ordering and deduplication
  • 3e481dc feat(logging): add logging for blacklisted pubkeys count
  • 85e5214 feat(policies): modularize relay policies for auth and access control
  • 1b5aad8 feat(template): update favicon
  • f6c5d5b feat(workflows): add lint workflow with golangci-lint
  • d78a610 75f9459 feat(wot): add configurable WoT depth levels
  • 084e248 feat(wot): deduplicate Nostr events by Kind and PubKey
  • 8ff9467 feat(wot): improve pruning logs to display eliminated pubkeys
  • b73e169 feat(wot): lockless WoT refresh
  • ffa80d1 feat(wot): log top pubkeys by follower count in debug mode
  • c85d0fb feat: add support for multiple npubs
  • b3eb02f feat: automatic WoT refresh
  • 018282e feat: owner public key was added to configuration
  • d336fd9 feat: passing context to main goroutines
  • ef4bc0c feat: updating wot refresh interval from hours to duration

Bug fixes

  • ceae909 fix(config): correct empty array in blacklisted_npubs.example.json
  • f898afd fix(config): reintroduce WhitelistedPubKeys
  • 4923e83 fix(config): update backup interval default 24 value in .env.example
  • af14b61 fix(config): update relay icons in .env.example
  • 1cbd030 fix(dependencies): bump golang.org/x/crypto to v0.45.0
  • ee18018 fix(import): use FetchMany instead of FetchManyReplaceable
  • c539d87 fix(wot): moving initialization of wot before its usage (#112)
  • ea334d5 fix(wot): prevent double-counting followers of followers

Code Refactoring

  • 4e6747f refactor(config): remove unused import query interval configuration
  • ddd2e31 refactor(import): remove embedded struct indirection in import.go
  • b714e69 refactor(jsonl): replace getDBs and getDBByName with unified dbs map
  • 2223acf refactor(main): extract help message into separate function
  • 20d00cc refactor(wot): extract WoT functionality to its own package
  • e24ea48 refactor(wot): move wot into pkg directory
  • 2b2cb8d refactor: extract cloud storage functionality to internal/cloud package
  • 4df9125 refactor: polishing rough edges
  • 9b38a01 refactor: removing direct use of config from periodicRefreshWot
  • b8b65e4 refactor: replacing integer slice with set for allowedKinds
  • 7ed8445 refactor: simplifying batching for wot map

Performance Improvements

  • e16fd13 perf(main): delay WoT computation until necessary
  • 82a9945 perf(wot): reduce memory usage in Refresh by using atomic counters
  • 66f5495 perf: defer expensive relay initialization for CLI commands

Others

  • 6563150 Add Apache as an option for serving in README
  • fe85bca Add Apache reverse proxy config to README
  • 3bce82a Added Apache proxy information to README.md
  • 45bdcb3 build(dependencies): bump khatru to v0.19.0
  • 9761e45 build(dependencies): bump various dependencies to latest versions
  • 6db9e4b build(dependencies): bump xsync to v4.4.0
  • aae1890 build(goreleaser): features should come first
  • 65838b5 Change MemoryLimit to MemoryMax in README
  • 1c28aa4 chore(config): clarify optional whitelisting and blacklisting file paths
  • 43aa631 chore(config): clean up docker lefovers from env.example
  • 6757852 chore(config): update default timeout for owner notes fetch to 60s
  • 0be714c chore(pgp): extend haven subkey expiration to 2028-02-24
  • 5bf446b chore(workflows): update actions versions in release workflow
  • 403534d chore(wot): merge log messages for pruning pubkeys
  • 8d7f66e chore(wot): replace log with slog
  • 9ae2f4c chore(wot): update WoT refresh interval from 1h to 24h
  • d6f8cbf ci(workflows): add write perms for statuses in PR validation workflow
  • 9c2acf3 ci(workflows): fix syntax error in PR conventional commit validation
  • f62e0fd ci(workflows): update permissions for PR validation workflow
  • dc81301 ci(workflows): write permissions in PR validation workflow
  • 2edef83 ci: add PR conventional commit validation workflow
  • 1660149 Correct Apache configuration code block formatting
  • 4cb371b docs(backup): enhance backup and restore documentation
  • d5682e1 docs(jsonl): add dedicated JSONL export/import documentation
  • c621ddd docs(readme): add badges for Go version, license, CI, and Go report card
  • 55bc70b docs(readme): add Go project version badge and update Go version badge
  • adc5b9e docs(readme): add links to Go version and license badges
  • b023435 docs(readme): fix GitHub release badge link
  • 9cc39e3 docs(readme): update badges for Go version and release
  • 3cd9c49 docs(verify): improve and fix formatting in GPG guide
  • eef8b18 docs(wot): add dedicated Web of Trust documentation
  • 8277a70 docs(wot): enhance WoT configuration and level descriptions
  • 94a4865 docs(wot): improve WoT Documentation + mermaid diagram
  • 8ad7c80 docs(wot): improvements to mermaid diagram
  • c52d650 docs(wot): remove AI correctio message
  • fed34bd docs: add documentation for whitelisting and blacklisting
  • 3bcecdc docs: document autostart Haven on macOS
  • 5f13d53 docs: review documentation for v1.2.0 release
  • 95fb1e7 docs: small improvements to formatting
  • ee9782f docs: update formatting and reword notes in backup and wot documentation
  • b0f722c Improve formatting of Certbot command in README
  • c79871d revert(workflows): remove PR conventional commit validation workflow
  • aedfcb1 Update README for nginx configuration instructions
  • c41867a Update README.md

Breaking Changes

  • Renamed Environment Variables: Web of Trust (WoT) settings have been consolidated and moved to a global scope.
    Previous settings like CHAT_RELAY_WOT_DEPTH and CHAT_RELAY_WOT_REFRESH_INTERVAL_HOURS have been replaced by
    WOT_DEPTH and WOT_REFRESH_INTERVAL respectively.
  • JSONL Backups: The backup and restore system now exclusively uses JSONL-based files.
    The legacy backup providers (AWS/GCP) have been removed in favor of a unified S3-compatible cloud storage approach.

A huge thank you to everyone who contributed to the v1.2.0 release! This version wouldn't be the same without your work and dedication.

Thank you:

Your contributions are greatly appreciated! 🚀✨

Don't miss a new haven release

NewReleases is sending notifications on new releases.