{"path":"CHANGELOG.md","size":4133,"locked":false,"binary":false,"truncated":false,"content":"# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).\n\n## [Unreleased]\n\n### Changed\n- `lib/sns.js` now uses **SNS V2 record functions** (`createRecordV2Instruction`\n  / `updateRecordV2Instruction`) as the primary write path, replacing V1\n  entirely. V1's `createNameRegistry` was abandoned after repeated\n  unexplained \"missing signature\" errors across multiple devnet attempts.\n  V2's signature was read directly from the installed package's source\n  (not guessed) and confirmed working via a real devnet transaction whose\n  program logs showed both the account-allocation (\"Create\") and the\n  content write (\"Update Data\") succeeding — not just a passing\n  transaction status. `readIpfsRecord` now uses the equivalent\n  `getRecordV2`, which is well-documented on the read side (unlike V1's\n  read path, which relied on a public-docs synthesis that was never\n  independently confirmed).\n\n### Milestone\n- First successful live Anchr deploy: a Vite site built, pinned via\n  Filebase, and confirmed fully rendering (including interactivity/HMR)\n  at a real IPFS gateway URL.\n\n### Fixed\n- `detectFramework` now warns about the relative-asset-path requirement\n  for IPFS hosting (`base: './'` for Vite, `\"homepage\": \".\"` for CRA) —\n  discovered via the first real deploy, which rendered blank until this\n  was set. Default absolute paths break because IPFS serves content from\n  a `/ipfs/<CID>/` subpath, not domain root.\n- `anchr deploy` no longer hard-requires a `domain` in `anchr.json`. You\n  can now build + pin to IPFS and get a working gateway link without\n  owning a `.sol` domain yet — the SNS record write is skipped (not\n  errored) when no domain is set, and can be added later by re-deploying.\n- `lib/sns.js` now uses a polling-based transaction confirmation\n  (`lib/solana-confirm.js`) instead of `@solana/web3.js`'s default\n  `sendAndConfirmTransaction`. That default relies on WebSocket\n  `signatureSubscribe`, which some RPC providers don't support (confirmed:\n  Alchemy's devnet endpoint) — causing false \"expired\" errors even when a\n  transaction actually landed on-chain. Found via live devnet testing;\n  affects any real `anchr deploy` run too, not just the test script.\n- Removed an unused-variable lint warning in `lib/deploy.js` by actually\n  printing the transaction signature instead of discarding it.\n\n### Added\n- Filebase as an alternate pinning provider (`lib/filebase.js`), selectable\n  via `\"provider\": \"filebase\"` in `anchr.json`. Added as a fallback after\n  Storacha's `up.storacha.network` upload endpoint was found unreachable\n  from multiple independent networks (Codespaces, Replit, and direct\n  mobile — confirmed via DNS_PROBE_FINISHED_NXDOMAIN), pointing to a\n  provider-side issue rather than anything environment-specific.\n- `scripts/devnet-test.js` — standalone devnet verification script for the\n  SNS write path (see \"Known gaps\" below for current status).\n\n### Known gaps\n- The exact field name for the CID on `@filebase/sdk`'s upload result\n  isn't independently confirmed from docs alone — verify against a real\n  response before relying on it (see comment in `lib/filebase.js`).\n- `writeIpfsRecord`'s update-fallback path (used when a record already\n  exists) hasn't been independently tested end-to-end — only the\n  create-a-fresh-record path has a confirmed successful transaction. If\n  you hit the fallback, verify with `readIpfsRecord` before trusting it.\n\n## [0.1.0] - 2026-07-12\n\n### Added\n- Initial MVP CLI: `anchr init` and `anchr deploy`\n- Framework detection for Vite, Next.js (static export), and Create React App\n- Storacha (IPFS) upload integration using the documented backend/CI pattern\n- SNS `.sol` domain IPFS record write/read (V1 record format)\n- Project scaffolding: CI workflow, issue/PR templates, docs\n\n### Known limitations\n- SNS V2 record write is not yet implemented — V1 only for now (see `lib/sns.js`)\n- No automated deploy-on-push yet — `deploy` workflow is manual-trigger only\n  pending devnet verification of the SNS write path\n"}