Conversation
* add builder * add builder * rewrite * rewrite Attestation * clippy * return when ok * fix * full integration with allocator API * fmt * apply review * apply review
* complete * fmt * clippy * apply review * apply review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * typo --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* add bench * apply review
* wip * mvp * add tests * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * update README * add stamper * fix wait_at_least * fix merge * fmt --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* init foundry workspace * add contracts crate * apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix ignore file * pnpm init vue-ts * add poc * add APIs
* wip * mvp * add tests * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * update README * add stamper * fix wait_at_least * fix merge * add stamper * fmt * apply review * add stamper to calendar server * add contract * update lock --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* embed abi * add Ethereum UTS tag * add Ethereum UTS tag * add verifier * refactor * deploy default instance * fmt
* move to cli crate * add stamp command * fix * add upgrade
Added README.md for UTS CLI tool with usage instructions and command reference.
* init * use noble * add encoder * add decoder * add tests * add sdk * complete sdk * fix * apply review * ignore lock file * add eslint * apply review * update readme
…/fmt/test orchestration (#27) * Initial plan * setup proper monorepo framework: rollup for SDK, vite for web, lint/fmt/test/build scripts Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * plan: tsc declaration-only emit + .ts import suffixes + eslint-plugin-import-x Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * tsc declaration-only emit, .ts import suffixes, add eslint-plugin-import-x Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * downgrade eslint from ^10.0.2 to ^9.38.0 to fix peer dep conflict with eslint-plugin-import-x Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * update --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> Co-authored-by: Jack <Jack>
* Initial plan * Install web dependencies: pinia, vueuse, tailwindcss, lucide-vue-next, date-fns Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * feat(web): build cyberpunk DApp UI with file digest, stamping, verification, and live feed - Configure Vite with path aliases and Tailwind CSS v4 - Create cyberpunk theme (neon colors, glassmorphism, scanlines, animations) - Add Pinia store for calendar status and recent stamps - Add useFileDigest composable: pick file from local FS and compute SHA-256/Keccak-256 - Add useTimestampSDK composable: stamp, verify, upgrade, decode .ots files - Add useWebSocketFeed composable: simulated real-time attestation feed - Create base components: GlassCard, BaseButton, StatusBadge - Create HeroTerminal with drag-and-drop file picker and hash input - Create StampingWorkflow with step-by-step pipeline visualization - Create VerificationResult with .ots upload and MerkleTreeViz (recursive) - Create LiveFeed with real-time scrolling entries - Create HomeView assembling all components with tab navigation - Export SDK class, DEFAULT_CALENDARS, enums as runtime values from SDK index Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * webapp don't need to build sdk * fix naming * feat(web): ethereum-first UI with real feed data from ethRPCs - Replace mock LiveFeed with real Ethereum Attested event polling via SDK ethRPCs - Show Ethereum chain RPC statuses in header instead of Bitcoin calendar nodes - Update subtitle to "anchored to Ethereum" - Expose singleton SDK instance via getSDK() for shared access - Bitcoin attestation verification still fully supported in Verify tab Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * feat: calendar config, real stamping progress, .ots download, upgrade polling SDK changes: - Add StampEvent/StampEventCallback types for real-time stamp progress - SDK.stamp() now accepts optional onEvent callback, fires events for each phase: generating-nonce, building-merkle-tree, broadcasting, calendar-response (per calendar), building-proof, complete Web app changes: - Add calendar URL configuration panel (settings gear in header) with add/remove/reset-to-defaults, persisted to localStorage - useTimestampSDK wires SDK callbacks to drive real pipeline phases - Download .ots file automatically on stamp completion via Encoder - Poll sdk.upgrade() every 15s after stamping for attestation upgrade - StampingWorkflow shows real phases including broadcast progress, building-proof, upgrading, and upgraded states - Pass fileName through stamp flow for meaningful .ots download names Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * feat: add web3 wallet provider support for browser usage SDK changes: - Add web3Provider (Eip1193Provider) field to SDKOptions and SDK class - Add WELL_KNOWN_CHAINS map for wallet_switchEthereumChain - Add getWeb3ProviderForChain() helper that tries wallet first, with automatic chain switching for well-known networks - verifyEthereumUTSAttestation now tries web3Provider first (no CORS), then falls back to ethRPCs - Export WELL_KNOWN_CHAINS from SDK index Web app changes: - Create useWallet composable: connect/disconnect MetaMask via EIP-1193, track address/chainId, listen for account/chain changes - Add setWeb3Provider() to useTimestampSDK for hot-swapping wallet - useWebSocketFeed prefers web3Provider for event polling when connected, falls back to ethRPCs when no wallet - Add Connect Wallet button in header (shows address + chain when connected, "No Wallet" when no EIP-1193 provider detected) - Wallet provider synced to SDK via watch on connection state Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * feat: manual .ots download, keepPending setting, attestation details, tab persistence, deduped feed SDK changes: - upgrade() accepts keepPending param (default false): when false, replaces pending attestation with upgraded one; when true, preserves both in a FORK Web app changes: - Don't auto-download pending timestamp; show "Download .ots" button in StampingWorkflow when stamping completes - Upgraded .ots uses original upload filename (e.g. document.pdf.ots) - Add keepPending toggle in settings panel, persisted to localStorage - Create AttestationDetail.vue: collapsible attestation info with etherscan links for blocks, addresses, tx hashes across all supported chains - VerificationResult uses AttestationDetail for each attestation - LiveFeed entries are clickable/collapsible with chain/block/sender details and etherscan links - Tabs use v-show instead of v-if to preserve content when switching - Active tab persisted to localStorage - Feed polls both web3Provider AND ethRPCs simultaneously, skipping chains already covered by wallet; deduplicates entries by id (chainId-block-index) Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * fix: correct Scroll chain IDs, delay hashing, wider feed, default keccak, directory stamp SDK: Fix Scroll chain IDs from 54351/54352 to 534351/534352 with correct hex values 0x8274f/0x82750 matching the Rust CLI and actual chain IDs. Web: Delay file hashing until Stamp button is pressed (not on file select). Add "Choose Directory" button for batch stamping entire directories. Batch stamps download all .ots files as a zip archive. Default file hash algorithm changed to Keccak-256. Add internal hash algorithm setting (for Merkle tree construction). Widen Live Feed panel from 1/3 to 2/5 grid for more horizontal space. All settings persisted to localStorage. Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * fix: batch stamp download, correct filenames with dir structure, download button in Complete step - Don't auto-download pending timestamps on stamp completion - Manual "Download pending .ots" button inside the Complete step only (hidden once phase moves to upgrading/upgraded) - Batch stamps download as zip preserving directory structure (webkitRelativePath used for path-aware filenames) - Each .ots in zip named after its input file (e.g. mydir/file.txt.ots) - Upgraded timestamps also download as zip for batch with correct names - Single file stamps download as individual .ots (same behavior as before) - Track all file names in stampFileNames array, not single stampFileName - Remove JSZip/Encoder imports from HomeView (moved to composable) Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * feat: download button fix, fake progress, verify original file, attestation details in proof path, upgrade tab, Scroll logo, testnet warnings, clickable chain panel StampingWorkflow: Download pending .ots button visible during both 'complete' and 'upgrading' phases (hidden once upgraded or idle). useFileDigest: Fake progress bar estimates time based on file size (~200 MB/s) instead of real streaming progress. Added digestFiles() batch method. VerificationResult: Optional original file upload to verify digest matches the .ots header. Shows match/mismatch status with icons. MerkleTreeViz: ATTESTATION steps now collapsible with full details (type, chain, block height, contract, tx hash with etherscan links). AttestationDetail/MerkleTreeViz/LiveFeed: Warning flag (⚠) for testnet or unknown network attestations. Mainnet = Ethereum (1) and Scroll (534352). All others show orange warning banner. LiveFeed: Added txHash to feed entries from log.transactionHash. Scroll logo shown for Scroll chain entries. AttestationDetail: Scroll logo in header and expanded type row. UpgradePanel: New tab for manual .ots upgrade with verify, upgrade now button, and download upgraded result. HomeView: Clickable "X/Y chains" in header opens dropdown showing each chain with name, ID, status, latency, Scroll logo. Add custom chain by ID, remove individual chains, reset to defaults. Persisted to localStorage. stores/app: addChain/removeChain/resetChains with localStorage persistence. Public RPC fallbacks for common chains. Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * fix: chain panel z-index over content, add RPC endpoint editing per chain - Add `relative z-50` to header so chain dropdown renders above terminal and live feed content - Add customRpcs storage (localStorage persisted) for per-chain RPC URLs - Chain panel shows current RPC URL for each chain with pencil edit button - Click pencil to inline-edit RPC URL, Enter or check to save - Custom RPCs take priority over SDK providers and public RPC fallbacks - Reset defaults clears custom RPCs along with chain list Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * use scroll logo * fix paths * add cors header * allow to modify rpc endpoints * remove scroll logo from overview * run prettier * fix * adjust space --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> Co-authored-by: lightsing <light.tsing@gmail.com>
- Install @lingui/core, @lingui/cli, @lingui/vite-plugin, @lingui/format-po - Create lingui.config.ts for locale configuration (en, zh) - Create src/i18n.ts for i18n instance setup with locale persistence - Create src/composables/useLingui.ts Vue composable for reactive translations - Add .po module type declarations (src/env.d.ts) - Create English (en.po) and Chinese (zh.po) message catalogs - Update vite.config.ts with lingui Vite plugin - Wrap all hardcoded UI text across all components with t() - Add language switcher button (Languages icon) in header Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com>
- Add @lingui/message-utils dependency for generateMessageId - Hash message IDs in useLingui composable to match compiled catalog keys - Move locale switch handler to named function in HomeView - Sync _locale ref with i18n on composable init Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com>
* impl wal * apply review * fix: add tests (#31) * Initial plan * Initial plan for WAL test coverage Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * Fix WAL race condition, add filled_index, comprehensive WAL tests, remove spin loop per review - Add filled_index to JournalInner to fix data race where WAL worker could read slots before data was written (write_index was bumped before slot fill) - Writers now spin-wait on filled_index CAS after writing data, ensuring the WAL worker only reads fully-filled slots - Remove busy-wait spin loop from WAL worker; use park/unpark only - WAL worker now drains ALL available data before parking (no IO_BATCH_LIMIT cap) - Add Drop impl for WalInner to signal shutdown on drop - Add tempfile dev-dependency for test isolation - Fix all existing tests to use isolated temp directories via test_journal() helper - Fix incorrect matches! assertion in commit_returns_error_when_full test - Add shutdown() calls to tests for proper WAL worker cleanup - Add 21 comprehensive WAL tests covering: - Segment file naming, creation, scanning - Segment rotation and old segment cleanup - Recovery from empty dir, with data replay, with consumed checkpoint - Recovery of partial last segment (truncation) - Detection of incomplete segments and data loss - Shutdown behavior (rejects commits, idempotent) - End-to-end WAL persistence verification - Cross-segment recovery Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * some fix * update docs --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> Co-authored-by: lightsing <light.tsing@gmail.com> * apply reviews --------- Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com>
* init * fix * remove sort in MerkleTree * minimize uts * add refund * apply reviews and fix * add tests and fix * seperate notify and finalize * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * add submitter and use _msgSender * add token * add constants * update fee model * feat: integrate with EAS (#35) * integrate with EAS * reduce gas cost * add EAS test and adjust l1 gas * use timestamp instead of attest to reduce L1 gas * feat(eas): update rust side (#36) * update contracts * feat(eas): update ts sdk & web (#37) --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…ok (#54) * Initial plan * Update README with links and quick start; fix KaTeX \texttt for MathJax Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * fix --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> Co-authored-by: lightsing <light.tsing@gmail.com>
* add CLAUDE.md * docs: add Python SDK design specification * docs: add missing type definitions to Python SDK spec * docs: add RPC clients, SDK docs, and reference implementation to Python SDK spec * chore(sdk-py): initialize Python package with Poetry * feat(types): implement core types for Python SDK - Add OpCode enum for binary operation codes - Add attestation types (Pending, Bitcoin, EAS, Unknown) - Add status enums and result types (VerifyStatus, UpgradeStatus) - Add timestamp step types (Append, Prepend, Hash, Attestation, Fork) - Add DigestHeader and DetachedTimestamp types - Add error classes (UTSError, EncodeError, DecodeError, RemoteError) * feat(codec): implement binary encoder and decoder - Add constants for magic bytes, attestation tags, digest lengths - Implement Encoder class with LEB128 encoding - Implement Decoder class with LEB128 decoding - Support all attestation types and timestamp steps - Add round-trip tests for encode/decode * feat(crypto): implement Merkle tree and hash utilities - Add sha256, keccak256, ripemd160, sha1 hash functions - Implement UnorderedMerkleTree with proof generation - Add MerkleProof and SiblingNode types - Support tree serialization/deserialization - Add comprehensive tests for Merkle tree operations * feat(rpc): implement Bitcoin RPC client - Add BitcoinRPC async client for JSON-RPC - Add BitcoinBlockHeader dataclass - Support get_block_hash and get_block_header methods - Add async context manager support - Add mock-based tests for RPC client * feat(ethereum): implement EAS integration - Add EAS contract ABI definitions - Add OnChainAttestation dataclass - Implement read_eas_timestamp for timestamp verification - Implement read_eas_attestation for attestation reading - Add decode_content_hash utility - Define EAS_SCHEMA_ID and NO_EXPIRATION constants * feat(sdk): implement main SDK class - Add SDK class with async context manager support - Implement stamp() for submitting digests to calendars - Implement verify() for timestamp verification - Support Bitcoin and EAS attestation verification - Add VerificationResult dataclass - Configure default calendars and EAS addresses * test: add unit tests for Python SDK - Add codec round-trip tests for encoder/decoder - Add Merkle tree tests for proof generation - Add Bitcoin RPC mock tests - Total 16 passing tests * docs: add Python SDK implementation plan * refactor(sdk): simplify status types and add upgrade method - Simplify AttestationStatus to a single dataclass - Simplify UpgradeResult to a single dataclass - Add upgrade() method to SDK for upgrading pending attestations - Update public API exports in __init__.py - Add AttestationStatusKind enum export * test(sdk): add unit tests for SDK class - Test initialization and options - Test default calendars - Test invalid hash algorithm error - Test async context manager - Test verify with pending attestation - Test upgrade method * fix(sdk): address code review issues - Remove duplicate return statement in merkle.py - Move Self import to top of file - Add SDK.from_env() class method - Fix UpgradeResult.original type to PendingAttestation - Add Literal type for hash_algorithm parameter - Add missing public API exports (MerkleProof, SiblingNode, sha256, keccak256) * test(sdk): add tests for SDK.from_env() and conftest.py - Add test_sdk_from_env for environment variable configuration - Add test_sdk_from_env_defaults for default values - Create conftest.py with common fixtures * feat(sdk): export step types from public API - Add SHA256Step, SHA1Step, RIPEMD160Step, Keccak256Step exports - Add AppendStep, PrependStep, ReverseStep, HexlifyStep exports - Add ForkStep export - Update __all__ list * test: increase code coverage to 83% - Add test_types.py for type validation tests - Add test_encoder.py for encoder module tests - Add test_decoder.py for decoder module tests - Add test_crypto_utils.py for hash function tests - Add test_errors.py for error class tests - Total 121 tests passing * chore: add black formatter to pre-commit hooks * style: format Python code with black * apply review * apply review
* feat(sdk-go): initialize Go module for UTS SDK - Initialize go module as github.com/uts-dot/sdk-go - Add go-ethereum v1.17.1 dependency - Add package documentation in doc.go * fix(sdk-go): properly add go-ethereum dependency * feat(sdk-go): define error types matching Rust implementation Add comprehensive error types for the Go SDK: - ErrorCode type and constants for all error variants - SDKError struct with Code, Message, and Context - DecodeError with constructors for all variants (BadMagic, BadVersion, LEB128Overflow, BadOpCode, etc.) - EncodeError with constructors (UsizeOverflow, InvalidUriChar, UriTooLong) - VerifyError with constructors (NoValue, Pending, BadAttestationTag, Decode) - EASVerifierError with constructors and IsFatal/ShouldRetry methods - RemoteError for network/remote operation failures * feat(go-sdk): define timestamp types (Op, Step, Timestamp) Define core timestamp types for Go SDK: - Op type with all operation constants (APPEND, PREPEND, SHA256, etc.) - Step interface with Op() method - Concrete step types: AppendStep, PrependStep, ReverseStep, HexlifyStep - Digest step types: SHA256Step, Keccak256Step, SHA1Step, RIPEMD160Step - ForkStep with nested Timestamp slice - AttestationStep wrapping Attestation interface - Timestamp as []Step slice * feat(go-sdk): define attestation types (Bitcoin, EAS, Pending, Unknown) * feat(sdk-go): add header and status types - Define DigestOp constants with output sizes (SHA1/RIPEMD160: 20 bytes, SHA256/KECCAK256: 32 bytes) - Define DigestHeader with Kind and Digest fields - Define DetachedTimestamp with Header and Timestamp - Define AttestationStatusKind constants: VALID, INVALID, PENDING, UNKNOWN - Define AttestationStatus with attestation, status, error, and info fields - Define VerifyStatus constants: VALID, PARTIAL_VALID, INVALID, PENDING - Define UpgradeStatus constants: UPGRADED, PENDING, FAILED - Define UpgradeResult and VerificationResult structs * test(sdk-go): add unit tests for types package * feat(sdk-go): add codec constants for opcodes, tags, and schema ID * feat(sdk-go): implement LEB128 encoding/decoding for u32 and u64 * feat(sdk-go): implement Encoder for timestamp serialization Add encoder with methods for writing bytes, LEB128 integers, headers, steps (append/prepend/hash/fork/attestation), and full timestamps. * feat(sdk-go): implement timestamp decoder with tests * feat(sdk-go): implement SHA256 and Keccak256 hash functions Add crypto package with hash function wrappers for the UTS protocol. Includes SHA256 using standard library and Keccak256 using go-ethereum. * refactor(sdk-go): make UnknownAttestation.tag private with getter * feat(sdk-go): implement Binary Merkle Tree with proofs * feat(sdk-go): implement Bitcoin RPC client for block header verification * feat(sdk-go): implement Ethereum RPC client with EAS support Add EthereumClient for connecting to Ethereum RPC endpoints and interacting with EAS contracts. Includes chain-specific address configuration and contract call methods for attestation and timestamp retrieval. * feat(sdk-go): implement Bitcoin attestation verification - Add VerifyBitcoin function with RPC client interface - Implement merkle root comparison with byte reversal - Add comprehensive test coverage for success and error cases - Create package documentation explaining Bitcoin verification process * feat(sdk-go): implement EAS attestation verification - Add VerifyEASAttestation for validating EAS attestations - Add VerifyEASTimestamped for timestamp-based verification - Verify schema ID matches UTS schema - Check attestation is not revocable - Validate attested hash matches expected digest - Include comprehensive tests for all verification paths * feat(sdk-go): implement attestation dispatcher for verification * feat(sdk-go): implement SDK constructor and public API (Tasks 17-20) - Create sdk.go with SDK struct, options, and core methods - Implement Stamp: generates nonces, builds Merkle tree, submits to calendars - Implement Verify: executes steps and verifies attestations - Implement Upgrade: upgrades pending attestations from calendars - Move errors to separate package to break import cycle - Update codec package imports to use new errors package * feat(sdk-go): add CLI examples for stamp, verify, and upgrade * docs(sdk-go): add README with installation, quick start, and API overview * feat(sdk-go): add comprehensive tests for SDK package - Add tests for SDK constructor and options (NewSDK, WithCalendars, WithBitcoinRPC, WithEthereumRPC, WithTimeout, WithQuorum, WithNonceSize, WithHashAlgorithm) - Add tests for Stamp method with mock calendar server - Add tests for Verify method with various attestation types (pending, bitcoin, unknown) - Add tests for Upgrade method with mock upgrade server - Add tests for executeStep helper (AppendStep, PrependStep, ReverseStep, HexlifyStep, SHA256Step, Keccak256Step) - Add tests for aggregateResult helper - Add tests for edge cases (context cancellation, invalid URLs, malformed responses) - Add tests for VerificationResult - Test coverage: 76.9% for SDK package * fix(decode): apply review suggestions Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix module name * fix ext name * update calendar url * fix: untrust read size limited * fix: untrust read size limited * fix: httpClient timeout * add errors handling for empty * fix: executeStep mutates data * fix: return hashAlgorithm unsupported * fix: executeStep mutates data * fix: nextPowerOfTwo 32bit * fix: add error codes * fix: NewDigestHeader no check length * fix: fork input wrong * fix default clients * add logging * update * Update packages/sdk-go/README.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix: apply review * fix: apply review * fix: apply review * feat: add maxHttpResponseBytes option * fix: return copy * fix: return copy --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* init nuxt docs * should not fmt md * update content * add ci * fix * fix * fix * use vitepress * use vitepress * fix build * fix build * fix build * fix build * approve builds
* add ots default calendars * display chain * rc not suitable for production * switch to stable rust * move stamp & upgrade to sdk * move verify to sdk * remove unused dependencies * gate verifier * remove no_std support * remove tracing optional * apply review
30 tasks
…d auto-labeling (#63) * Initial plan * Add CI workflows for PR checks with path-based filtering, caching, and auto-labeling Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * Add explicit permissions block to all CI workflows for least-privilege security Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * remove unstable options * Add missing formatting checks to CI: taplo (TOML), forge fmt (Solidity), black (Python) Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * fix python ci * fix python ci * fix python ci --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> Co-authored-by: lightsing <light.tsing@gmail.com>
* Initial plan * Fix SDK discrepancies: EAS chain encoding, URI validation, EAS addresses, Go test defaults Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com>
# Conflicts: # .github/workflows/publish-docs.yml
* Initial plan * Add OSS readiness files: licenses, community docs, GitHub templates, and README updates - LICENSE-MIT: MIT license text - LICENSE-APACHE: placeholder (to be updated by maintainer) - LICENSE-AGPL: placeholder for AGPL-3.0 (calendar/relayer, to be updated) - CODE_OF_CONDUCT.md: Contributor Covenant v2.1 - CONTRIBUTING.md: development guide and contributor guidelines - SECURITY.md: vulnerability reporting policy - .github/FUNDING.yml: links to calendar/relayer for ETH donations - .github/ISSUE_TEMPLATE/bug_report.yml: structured bug report form - .github/ISSUE_TEMPLATE/feature_request.yml: feature request form - .github/ISSUE_TEMPLATE/config.yml: issue template config with docs link - .github/PULL_REQUEST_TEMPLATE.md: PR description template - Update crates/calendar and crates/relayer Cargo.toml to AGPL-3.0-only - Update README.md with badges, license section, contributing link, funding info - Add license field to root package.json Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * update license * attach license to source * update description --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> Co-authored-by: lightsing <light.tsing@gmail.com>
…ing stale pending attestations (#65) * Initial plan * Add purge_pending method to core and SDK, add CLI purge command Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * Add purge_pending to TypeScript, Go, and Python SDKs Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * Add interactive selection for purge, selective purge support across all SDKs Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * Rename core API to retain_attestations for generic attestation filtering Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * Fix CLI prompt to use stdout instead of stderr for interactive prompts Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * Refactor retain_attestations to use generic FnMut, add retain_attestations_mut variant Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> * fmt * clippy --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: lightsing <15951701+lightsing@users.noreply.github.com> Co-authored-by: lightsing <light.tsing@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.