Lens API đ¨ (@lensapi) ⢠Hey
Updates from the team of builders behind the Lens API, Lens SDK and Momoka Scaling Solution
Publications
- One of the most hyped features of Lens V2 is Open Actions
They allow users to execute external actions (to any smart contract) directly on Lens đŤď¸
Some use cases this will open up:
1. Interacting with DeFi protocols (lend, borrow, stake, swap,etc..)
2. Mint / collect from other apps like @opensea
3. Join a DAO, vote in a DAO
4. Interact with cross-chain bridges
5. Join a waitlist
When I think of the composability enabled by web3 and open protocols, this is exactly what excites me!
https://mirror.xyz/lensprotocol.eth/-hJH-2IYSe56rK7IEdwSI17hUWt-paTyAs1r4Zes0uQ
- Introducing LIP-3: Lens Share. A new standard to share Lens profiles and publications across the evergrowing Lens ecosystem.
The number of apps flourishing within the Lens ecosystem has highlighted a need for URL sharing across platforms in a manner that's app-agnostic. Users should be free to engage with their app of choice. However, there can be situations where the users content might not be accessible on their preferred Lens app. That's why we've looked into augmenting the user experience.
The solution? A standardized link-sharing strategy and an app-agnostic interface. This promises smoother integration across apps within the Lens ecosystem, all the while preserving the credit to the original app.
Meet Lens Share Link â a universal URL that's capable of sharing a profile or publication.
Lens apps should adopt a common link format such as:
- https://share.lens.xyz/u/<handle> for Profiles
- https://share.lens.xyz/p/<publication-id> for Publications
We welcome all Lens app builders to contribute. Submit a PR against our repository with the app manifest(s) you'd like to see listed.
This is just the beginning of app-agnostic sharing on Lens. Stay tuned for more updates.
Check out our GitHub page to learn more about Lens Share: https://github.com/lens-protocol/lens-share
Dive into the dev docs: https://docs.lens.xyz/docs/lens-share
- Help secure Lens together đ¤
The public code4rena security audit is live. We encourage the developer community to discover security vulnerabilities and share their findings here.
More details here: https://code4rena.com/contests/2023-07-lens-protocol-v2#top
- **Lens SDK 1.2 - Improvements in this release**
Snaphost Integration
Support for Wagmi V1
Bug fixes and improvements
**What's new?**
**Snapshot Integration**
Integrate Snapshot voting directly into your Lens app by using convenience react hooks.
Extract and visualize Snapshot proposal details with the `usePoolDetails` hook.
Allow users to vote on a given proposal with `usePoolVote` hook.
Refer to the docs for more details: https://docs.lens.xyz/docs/snapshot-integration
**Support for Wagmi V1**
The latest stable `wagmi` version could be now used with the Lens SDK by installing the latest `@lens-protocol/wagmi` version. Your older wagmi is still supported by the SDK on the `@lens-protocol/wagmi^1` release track.
**Bug fixes and improvements**
Better caching for publication/profile details, should no longer refetch if was fetched already from feed.
Improved dev-friendly error messages when providing malformed URL's to the `upload` handler when creating new publications.
Support for sandbox environment.
`useActiveWallet` and `useActiveProfile` state changes are synchronized to happen at the same time.
- Momoka now supports a beta rust client, doing it for the đŚ's
As we continue to scale Momoka, we want to ensure that it is built using a fast and scalable language. Rust is our preferred choice.
Explore here: https://github.com/lens-protocol/momoka/tree/master/momoka-rs
- **Lens SDK 1.1 - Improvements in this release**
1) Momoka support
2) Self-funded transactions fallback
3) Bi-directional pagination traversing
4) Supports limited free collects
5) Several `LensClient` improvements
6) Bug fixes and minor improvements
**What's new?**
**Momoka support**
The Lens SDK React hooks now support Momoka publications. To start using Momoka today just upgrade to `@lens-protocol/react-web@latest` and the SDK will take care of the rest.
The Lens SDK will choose Momoka posts over on-chain posts automatically based on your collect settings. It will also know when comments and mirrors need to be on Momoka infrastructure based on the referencing publication.
**Self-funded transactions fallback**
Occasionally gasless transactions might not be available for a given profile. To provide continuity in your user experience you can now fallback to execute transactions using the user's funds to cover gas costs. More documentation is available here: https://docs.lens.xyz/docs/self-funded-transactions
**Bi-directional pagination traversing**
It's now possible to traverse paginated results in both directions (older and newer results).
This allows you to implement functionalities such as "pull to refresh" on a mobile app or fetch newer feed entries. See this example as a reference: https://github.com/lens-protocol/lens-sdk/blob/main/examples/web-wagmi/src/discovery/UseFeed.tsx#L63
**Supports limited free collects**
Last month we launched a new collect module called `SimpleCollectModule`. In this SDK release, you can leverage all its potential. For example, you can define a Free Collect with a limited number of NFTs to be minted.
**`LensClient` improvements**
We added `client.authentication.verify` and `client.authentication.getAccessToken` methods to enable extraction and verification of someone's API credentials.
- Introducing the Lens SDK â your new go-to toolkit to create powerful experiences & applications for the social layer of Web3.
Developers rejoice! We have lowered the barrier to entry and made it easier than ever to create innovative, powerful, and engaging Lens apps and experiences. With the new Lens SDK you can plug into the Web3 social layer with just 10 lines of code.
Pick and choose the features you want - only the components you use contribute to the final size of your app bundles. These capabilities are all handled by the Lens SDK, allowing developers to focus on their core features.
The SDK is modular and composable. It seamlessly integrates with other Web3 projects, protocols, and tools such as @litprotocol.lens to enable token-gated publications.
Mobile apps have been some of the biggest success stories on Lens. The new SDK doubles down on mobile support, starting with React Native. With the SDK, you can build polished mobile apps without underlying knowledge of the Lens API or Lens Protocol.
Come build the future on the social layer of Web3.Â
Get started in our dev docs: https://docs.lens.xyz/docs/sdk-react-intro and dive into our latest blog here: https://mirror.xyz/lensprotocol.eth/LtJBLD6zX_P9EYdsJ2DrT9RaCbiE2vvtajF4Md6wHr0
- How to run a Momoka Verifier
This video walks through how to run a Momoka Verifier on your local machine đ
The Momoka Verifier enables you to operate a trustless verifier node that validates LENS DA publications in real-time.
It can also serve as an indexer, allowing you to stream and index the data yourself.
This open-source solution relies exclusively on software that you can run independently, without any dependency on LENS.
This ensures that even if LENS were to cease operation, you would retain access to your content, maintain proof of ownership, and continue to utilize it, all thanks to a decentralized data availability storage layer.
- Allow us to reintroduce ourselves...meet the native hyperscaling solution for Lens, Momoka! Momoka is an Optimistic L3 scaling solution, that will process transactions at hyperscale, and is designed to support the next generation of web3 social users.
Data availability layers are utilized to prevent storing information on-chain. While content on Lens may include an on-chain transaction, the content data is linked to a data availability location, like Momoka.
Momoka serves as a scaling solution that processes Polygon transactions off-chain, achieving hyperscale and reducing costs. Unlike L2 solutions, Momoka doesn't compress transactions into L1, it sends and stores them on a data availability layer.
The main challenge for decentralized social networks is to ensure that users have control over their content, while still being just as user-friendly as traditional social networks. Momoka makes the future of decentralized social possible.
We've worked relentlessly with the @bundlr-network.lens and Arweave teams to ensure scalability by providing Data Availability (DA) guarantees, allowing the use of Ethereum Virtual Machine (EVM)-supported wallets to save DA logic and facilitating the rapid publishing of data.
Permissionless innovation is at the core of everything we do on Lens. As we approach one year on mainnet (still in beta), we have been blown away by the talent and passion in our dev community but we realize in order to scale to the masses, we need to build new solutions.
Since yesterday, Momoka is already being beta tested on Lenster, Lenstube, Orb, Buttrfly and Phaver.
We look forward to seeing more applications roll out Momoka.
To make it easier to find any transaction made with Momoka, we built the Momoka Explorer (http://momoka.lens.xyz) to track and find Momoka transactions and to monitor the throughput speed of Momoka.
Join our Spaces today at 15:30pm UTC to hear from @stani.lens, @wagmi.lens, @nader.lens, and special guests from Bundlr and Arweave: https://twitter.com/i/spaces/1nAKEryXyDYGL/peek
- In Bulk and On Demand Queries with Lens BigQuery
đ Codebase - https://github.com/dabit3/lens-bigquery-with-node.js
đ Docs - https://docs.lens.xyz/docs/public-big-query
In this video, I'll introduce the Lens BigQuery API, demonstrate its capabilities using the Google Cloud Dashboard, and guide you through building a JavaScript project from scratch to query and store data locally.
By the end of this tutorial you should have a good understanding of how to use the API to query all of the available data sets.
- **Improvements in this release**
đ ď¸ Simplified integration for React web apps. Install and import from `@lens-protocol/react-web` with less configuration.
đ Token-gated support: You can now create encrypted posts and comments which can only be read by users that match the criteria you define.
𪪠Active profile is automatically wired as the Observer ID of all relevant queries. Doing so the Lens SDK provides a cohesive view of the data that is relevant to the eye of the Active Profile.
**What's new?**
- New `@lens-protocol/react-web` package for a simplified React web apps integration
- Token-gated posts and comments
- Cohesive data fetching using Active Profile as Observer ID
- Enhanced fields for `ProfileStats` and `PublicationStats`
- Added `appId` to LensConfig. Allows you to identify posts created by your app. You can then use the `sources` to filter posts by the same App ID
- Added `useProfilesOwnedByMe`
- Added `useProfilePublicationsForSale`
- LensReact Hooks SDK Made Simple: A Quick Start Guide for Developers
The Lens SDK includes a collection of React Hooks containing all you need to interact with the Lens Protocol.
In this video you'll learn how to get started building on Lens in only a couple of minutes using the Lens React Hooks SDK.
- Lens BigQuery Public Dataset is Live đ
Read more about unlocking new possibilities in our blog
https://mirror.xyz/lensprotocol.eth/L-VyE549sOOdi4nBgos6XNAUgf3H1oErfkAtndU6RHY
Learn how it works in our developer docs
https://docs.lens.xyz/docs/public-big-query
- Lens devs keep shipping đłď¸Â đ¨. A lot of cool things have been added with 1.26.0.
**Features**
¡Ability to create Nft galleries
¡Added support for data availability for mirror with signed typed data (staging only)
¡Add support for data availability for comment with signed typed data (staging only)
¡Added support for 'ar://' protocol in metadata
¡Added support for 'ar://' protocol in metadata
¡Added support authentication with EIP1271-compatible smart wallets
¡Added indexes to the database
¡Added support for MultirecipientFeeCollectModule
¡Added support for AaveFeeCollectModule
¡Added support for ERC4626FeeCollectModule
¡Added more relays to load balance to spread out traffic
¡Enabled **hasTxHashBeenIndexed** to be accessible without auth token
¡Moved the Follow Proxy action to RabbitMQ.
¡Moved the Collect Proxy action to RabbitMQ.
¡Removed Internal endpoints
¡Rewrote the notification service to improve performance
¡Removed wallets from showing in the **of** follower list
¡Handle validation internal extensions
¡Lensqueue granular error handling
¡Rabbitmq metrics and alerts
¡Improved speed latency on redis
¡Improved Estimate of gas
¡Improved Contain memory spikes
¡Whitelisted new apps for gasless transactions
**Bug fixes**
¡Added optional pretty name to whitelisted currencies
¡Added block timestamp to indexer
¡Added optional pretty name to whitelisted currencies
¡Fixed typo in GraphQL schema doc
¡Fixed collect records mismatch on the backend
¡Fixed typo in GraphQL schema doc
¡Fixed nft population in nft gallery
¡Fixed Internal error counts
¡Fixed typo in GraphQL schema doc
¡Gated working on the dispatcher
¡Resolved issue on collect modules circular references
¡Resolved issue: When using the **whoMirroredPublicationId** field in the request and querying a publication with multiple mirrors by the same profile profiles repeated in the response
¡Resolved issue on collect modules circular references
¡Resolved uncaught exceptions for graphql validation errors
¡Redis expiry times made dynamic
¡Resolved deadlocks on db
¡Stopped supporting kovan, rinkeby and ropsten testnets
¡Validation metadata fixes
**Breaking changes**
¡**Feed** and **feedHighlights** now require auth to call them
**Breaking changes actioned**
¡ACTIONED: breaking change: **timeline has been removed**
- **Improvements in this release**
We have added several new hooks in this release to help our community, highlights below đ
đ°Â Ability to collect a publication
â
 Enabled approving modules (gas efficient with support for EIP-1559 gas estimation)
đŞ A new feature that allows you to see who mirrored a publication
đŹÂ Expanded the filtering of feed, with explore publications and comments data
**What's new?**
Added **`useCollect`** hook enables the collection of publications
Added **`useApproveModule`** and internal toolings for EIP-1559 gas estimation Added **`useWhoMirroredPublication`** hook Added **`metadataFilter`** to **`useFeed`**, **`useExplorePublications`** and **`useComments`** Added **`IStorageProvider`** **`StorageSubscription`** **`StorageProviderSubscriber`** and **`IObservableStorageProvider`** to the package exports
Removed the **`walletType`** argument from the **`login`** method of **`useWalletLogin`** hook Removed **`IStorageProvider.subscribe`** method (use **`IObservableStorageProvider`** when custom subscription logic is required)
- Quick update for quicker load times. The Lens Protocol core team has rolled out some big improvements and now the Lens API notification server is 1000x faster đ¤Ż
- The Lens team continues to ship đ˘ hop aboard! đ¨ 0.3.0 đ¨
**Improvements in this release**
We added new hooks to enable some useful features for our community, some highlights below đ
đŞAbility to Mirror a publication
đAbility to report publication
âĄď¸Consolidated interface of several hooks for better consistency and ease of use
đŤŁHide publications can now be enabled
đMore features to manage your profiles
đ Get Started https://docs.lens.xyz/docs/sdk-react-getting-started
đ ď¸Â Get Technical here https://github.com/lens-protocol/lens-sdk
**What's New?**
- Added capability to filter by event type in useFeed hook.
- Added isValidHandle validation helper
- Added signless support to useUpdatedProfileImage hook
- Added useProfilesOwnedBy hook
- Added useReportPublication hook
- Added useWhoCollectedPublication hook
- Added useCreateMirror hook
- Added useActiveProfileSwitcher hook
- Added useProfilePublicationRevenue hook
- Added useUpdateDispatcherConfig hook
- Added useHidePublication hook
- Added useUpdateFollowPolicy hook
- Added useUpdateProfileImage hook
- Added useEnabledModules hook
- Consolidate useWalletLogin, useWalletLogout, and useActiveWallet interface
- Simplified async error handling
- Here's everything you need to know about our 0.2.0 Lens SDK Update
https://github.com/lens-protocol/lens-sdk
- If you could directly query the @lensapi.lens database (still in a graphql query) to be able to build your own custom queries and bulk fetch any data you wish would you use it? seeing more and more need for this IMO!
- # 0.1.0 - 23rd December 2022\n\nThe Lens Core Team is excited to announce the first Developer Preview release of the official Lens SDK.\n\nThe Lens SDK will greatly improve the developer experience of building with the Lens API. It allows you to integrate with the Lens Protocol in seconds and gives you full control over the UX of your app.\n\nThis is just the beginning for the Lens SDK. We are starting with a collection of React Hooks and will add a low-level API Client for more advanced integrations, beyond React.\n\nTry out the Developer Preview release and tell us what you think!â¨https://github.com/lens-protocol/lens-sdk\n\nIn this release:â¨\n- feat: authentication w/ transparent token renewal\n- feat: React Hooks to:\n - fetch publications\n - fetch profiles\n - fetch followers/following\n - create post\n - fetch feed\n - notifications\n- feat: wagmi integrationâ¨\n\nSee the initial documentation at: https://docs.lens.xyz
- **RELEASE**
# 1.23.0-1.25.0 - 22nd December 2022
Database migration to aurora is now fully complete.
We hope everyone has a merry christmas and happy new year, this one is free to collect as an early christmas present from the team, enjoy all!
On top of this here is everything else which is within this release.
## Features
- feat: DA mirrors, comments, posts (not exposed)
- feat: worldcoin SMS identity verification
- feat: DA signed typed data (not exposed)
- feat: extend code to handle reads and writes from different db connections
- feat: increase max pool to 50 and holding connections open for 60 seconds
- feat: allow ability to spread out the database reads into many read hosts to improve performance
- feat: config the read and write host connections
- feat: make running the backend easier and faster locally
- feat: improve some publication query performance by 2x
- feat: make feed only query reactions when it needs to
- feat: native arweave uploads
- feat: http and ethereum improvements. Http one means sharing connections!
## Bug fixes
- fix: scalar on gated collect condition
- fix: streamline ScalarOperator enum
- fix: gated: check if erc20 token condition references a smart contract that does not exist
- fix: resolve unfollowing issue sometimes happening
- fix: resolve unknown follow modules working
- fix: whoMirroredPublicationId results are not in order
- we will be doing a database migration moving to aurora to allow our pings worldwide to be faster, general speed up of all queries, having many read databases with auto-scale, alongside having read and write separate databases for memory reasons. This will mean on 08:15AM GMT Thursday 22nd December write actions will be down for 20 minutes.
- indexer will not index any new publications, profiles etc
- reactions and other parts will not be able to be actioned
once the migration is complete the indexer will catch up with anything it missed of course anything on-chain will still go on-chain but not be shown in the API if done in that period until it is back.
Reads will continue working as normal throughout the migration process.
Happy building all!
- # 1.23.0 - 30th November 2022
## Features
- feat: DA base package
- feat: bring in curated profiles into the database for ML
- feat: make backend to be easier to run locally
- feat: expose curated profiles to big query
- feat: performance upgrades and scaling improvements
## Bug fixes
- fix: do not get notifications for stuff once it is hidden
- fix: resolve canDecrypt on nested conditions
- # 1.22.0 - 16th November 2022
Big release today, you can now gate your publications with access criteria. Remember your publications itself is an NFT so you can gate a publication so only people who collect can see it, same with your follow graph. Very excited in what you guys build with this.
Alongside this we have also exposed an endpoint to allow you to upload videos and audios, as we have seen uploading those via IPFS and serving them can cause them to buffer and be slow. Our API endpoint will upload it and transcode it serving that file to all people who call the API. Behind the scenes it will be pinning it to IPFS so on-chain state is still decentralized.
- feat: profile interests
- feat: gated publications powered by LIT - https://docs.lens.xyz/docs/gated
- feat: add 3 new providers to gasless
- feat: if no default profile picked select the first created one to expose more profiles
- feat: ability to upload audio and videos via the API and it be pinned for you on ipfs but the transcoded version will be served for better audio and video experience - https://docs.lens.xyz/docs/media
- The Lens API Team has received a request from the community to open up discussion for a new version of the metadata standard.
We invite the entire Lens Dev Community to join the discussion on Github and contribute your ideas to version 3 of the metadata standard!
https://github.com/lens-protocol/api-examples/discussions/101
- # 1.20.0-1.20.1 - 4th November 2022
This is a huge step forward for UX for the API. This is our first steps doing optimistic API updates, this means when you do a free follow or collect the state will be reflected straight away in the UI experience. No need for hard UI optimistic caching and this inherits on all of the lens apps instantly. The transaction then is processed in the background without the user having to wait. This means for example you follow user Y and then refresh it will still look like your following, you will start seeing them in the timeline and it just be as it is like on web2 social media sites. Optimistic API updates is something we going to be doing for all actions as we start trying to build the best UX we can from the API level.
Features:
- feat: optimistic proxy action follow
- feat: optimistic proxy action collect
- feat: improve has tx been indexed reporting error quicker
- 4,000,000 gasless transactions & counting!
- # 1.18.0-1.19.0 - 28th October 2022, 18:00PM
Features
- deployment: reorganize tags on deployment to have better visibility on our monitoring tool.
- feat: feed highlights
- feat: allow `profileIds` in the publication query!
- feat: ability to filter on notification type to allow rich UIs
- feat: allow `profileIds` with `collectBy` in the publication query
- feat: support ML on big table and bring back ML recommendations
- feat: content should have a max length of 30,000 chars before it can be indexed
- feat: start storing the content of publication in db for ML purposes
- feat: shard the relay to improve relay performance (1 of 3)
- feat: extend gasless limits
- feat: add more profiles to the curated
Bugs
- fix: bug in first_comment_id should be the first not the last
- fix: resolve all the * in queries to avoid loading more stuff in memory then needed
- fix: add extra validation on metadata to avoid empty content
- fix: bug in first_comment_id should be the first not the last
- fix: resolve all the * in queries to avoid loading more stuff in memory then needed
- fix: add extra validation on metadata to avoid empty content
- # 1.17.0/1.16.2 - 12th October 2022, 12:00PM
## Features
- feat: migrate cron to rust `cron-sybil-org-rs`
- feat: migrate cron to rust `cron-custom-filter-sync-rs`
- feat: feed aggregator replaces `timeline`
- feat: protect the amount of scanning 1 alias can do. You are now limited to 3 per query and 1 per mutation
- feat: fix pods sometimes going down with 5xx due to memory issues
- feat: add authentication record to get more visibility of active users
- feat: improve performance and decrease hosting costs
## Bugs
- fix: resolve mentions notifications not being sent
- fix: degree of seperation 0 means nobody can comment even yourself
- fix: locale to handle bad regions for now
- fix: proxy free collect if following allow to collect
## Nullable warnings
- `totalCount` on `PaginatedResultInfo` is now nullable as some queries like `feed` can not work out full total due to aggregation
## Breaking changes
- incoming breaking change: `timeline` will be removed on November 15th, 2021 use feed instead
- incoming breaking change: `collectedBy` on `Post` and `Comment` will be removed on November 15th, 2021
- incoming breaking change: `timeline` will be removed on November 15th, 2021 use feed instead
- incoming breaking change: `collectedBy` on `Post` and `Comment` will be removed on November 15th, 2021
- # 1.16.1 - 27th September - 3rd October 2022, 20:00pm
## Features
- feat: add more profiles to curated list
- feat: add ability for others to see each other timeline
- feat: whitelist stems for relay
- feat: make profile searching exact match on handle
- feat: add `https://theshr.xyz/` to gasless
- feat: add memester to gasless
- feat: add caching to the degree of seperation
- feat: add more handles to curated
- feat: add caching to reference module
## Fixes
- fix: take out expensive stats query for now
- # 1.15.0 and 1.16.0 - 22nd September 2022, 13:30
## Features
- feat: degree of seperation reference module
- feat: add field resolvers for `canComment` and `canMirror`
## Bug fixes
- fix: resolve tagging snapshots
- fix: expose alt tag and cover when snapshotting
- fix: invalidating cache for collects!
- # 1.13.0 and 1.14.0 - 14th September 2022, 12:30
## Features
- feat: custom filters cron
- feat: the first custom filter gardeners
- feat: add more curated profiles
- feat: add reactions to notifications
## Bugs
- fix: resolve 5xx sometimes happening when pod is not ready
- # 1.12.2 - 9th September 2022, 18:00
## Features
- feat: allow internally to use metadata v2
- feat: extend the curated profiles
- feat: improve the publication building
- feat: improve query speed all round
- # 1.12.1 - 5th September 2022, 13:00
## Features
- feat: make explore default time 24 hours not 1 week to try to explore more publications and make it more fun for UIs
- feat: add new explore filter which is `CURATED_PROFILES` to allow discovery on known good content profiles
- feat: order collects by default profiles first then collected times to make profiles be top
- feat: order followers by default profiles first then follow time to make discovery better and wallet fall at the bottom
- feat: make random on explore a bit better instead of random everything use only its context it got back
- You may have noticed that the Who To Follow recommendations displayed in Lenster (and other frontends that use the Lens API) are looking a bit different recently. The Lens ML team, which I lead, recently released an update to the algorithm that backs that API endpoint making it so that recommendations are now personalized to each user. Our hope is that you're now getting recommendations that make more sense based on the profiles that you already follow.
The algorithm is still in a beta period and we're looking for feedback on the recommendations. So how do they look for you â better, worse, the same? Maybe you discovered someone you didn't even know was on Lens? Maybe it's a bunch of low quality profiles? Let us know!
- # 1.12.0 - 2st September 2020, 14:30
## Features
- feat: big query base generic package lays out the interface to query
- feat: write the machine-learning base package and add the first wtf-rec logic in
- feat: `recommendedProfiles` now uses ML to predict who to follow
## Bug fixes
- fix: explore fix on publications
- fix: profile metadata snapshot
- fix: tagging searching
- fix: metadata filtering and paging
- # 1.11.0 - August 26th 2022, 11:00
# Features
- feat: deploy sandbox API to production allowing builders to have an environment they can whitelist modules and use the API
- # 1.10.1 - August 24th 2022, 17:30
## Features
- feat: mutual followers
## Bug fixes
- fix: resolve validation on metadata bio, name, attributes
- fix: relay
- fix: resolve bad `bio` in metadata profiles
- # 1.10.0 - August 24th 2022, 11:00
## Features
- feat: allow unknown collect modules (sandbox incoming)
- feat: allow unknown follow modules (sandbox incoming)
- feat: allow unknown reference modules (sandbox incoming)
- feat: improve error tracing
- feat: whitelist orbs and social3 for relay
- feat: bake in retries of the relay on proxyActions
- feat: add `getWhoReactedPublication` so you can fetch who reacted to a publication
- feat: enable `fastest` in relay mode to avoid going into secondary nodes
- feat: prod API dashboard deployment
## Bug fixes
- fix: issue sometimes getting back reactions
- fix: extra checks if only followers can collect the free collect
- RELEASE - 1.9.1 - August 22nd, 2022, 16:00
Features
- feat: all dApps on testnet can use gasless + dispatcher within the API freely! Happy building!
- The @lensprotocol & @lensapi.lens teams have released 5 new features this week. Have you found them all yet? đ
- RELEASE - 1.9.0 - August 22nd, 2022, 11:15
## Features
- feat: add some new indexes
- feat: free follow and free collect logic in the `proxyAction` and `proxyActionStatus`
- feat: speed up explore profiles sql
- feat: add spam to the reporting
- feat: ability to validate your publication metadata before you submit it `validatePublicationMetadata`. This allows devs to not submit broken metadata standards and easily debug.
- feat: ability to check the status of your metadata after you upload and its mined `publicationMetadataStatus`. This will give full visibility if its not queryable.
- feat: speed up the explore publication query
## Bug fixes
- fix: resolve notification mirror profile
You can now follow people who do not have a follow module or collect publications which are free without doing an approval modal. Enjoy!
- RELEASE - 1.7.0 + 1.8.0 - August 19th, 2022, 10:00
Features
- feat: dispatcher public API! (whitelisted apps)
- feat: upgrade relay npm package
- feat: extra info for claiming
- feat: worldcoin integration https://human.withlens.app/
- feat: worldcoin on chain identity is now on the profile
- feat: improve graceful shutdown of pods
Posted using the dispatcher!
- RELEASE - 1.6.0 - August 11th, 2022, 15:00
Features
- feat: metadata v2 support - https://docs.lens.xyz/docs/metadata-standards
- feat: ability to filter on metadata v2 on publication queries
- feat: create a cron for migration so we can execute them in code on box without ssh
- feat: map dedicated lens infura to help with infura public gateway issue
- feat: add notification id in the notification response to help client side caching
- feat: expose endpoint to bring back all the tags filtered by popular and app
- feat: profile and publications syncer now have different crons and x3 load allowance
feat: Integration with ENS to enable the offchain resolve.
back dated feature log:
- feat: ens on-chain identity now in the database
- feat: sybil.org linking for on-chain data https://github.com/Uniswap/sybil-list/blob/master/verified.json
- feat: `onChainIdentity` now exists on `Profile`
- feat: publication stats > `totalAmountOfComments` is a global stat of the amount of comments, if your filtering on sources some comments may not be included in what your trying to show. This means the count number would be wrong. We now have have a field resolver on the `PublicationStats` type which will return the total amount of comments for the sources you specified:
1) commentsTotal(forSources: ["app1", "app2â])
2)postsTotal(forSources: ["app8"])
3) mirrorsTotal(forSources: ["app8"])
4) publicationsTotal(forSources: ["app9"])
- The Lens API Team have received a proposal from @yoginth.lens @ellie.lens @phaver.lens @asian.lens @cesare.lens @m1guelpf.lens @wagmi.lens for a new version of the metadata standard.\n\nThe proposed metadata standard (version 2.0.0) is copied below, please comment with any changes or suggestions!\n\ntype Markdown = string;\ntype Url = string;\ntype AppId = string;\n\ninterface MetadataV2 {\n /**\n * The metadata version.\n */\n version: '2.0.0';\n\n /**\n * The metadata lens_id can be anything but if your uploading to ipfs\n * you will want it to be random.. using uuid could be an option!\n */\n metadata_id: string;\n\n /**\n * A human-readable description of the item.\n */\n description?: Markdown;\n\n /**\n * The content of a publication. If this is blank `media` must be defined or its out of spec.\n */\n content?: Markdown;\n\n /**\n * IOS 639-1 language code aka en or it and ISO 3166-1 alpha-2 region code aka US or IT aka en-US or it-IT\n * Full spec > https://tools.ietf.org/search/bcp47\n */\n locale: string;\n\n /**\n * Ability to tag your publication\n */\n tags?: string[];\n\n /**\n * Ability to add a content warning\n * enum properties = NSFW, SENSITIVE, SPOILER\n */\n contentWarning?: ContentWarning;\n\n /**\n * Main content focus that for this publication\n * enum properties = VIDEO, IMAGE, TEXT, AUDIO, LINK, EMBED\n */\n mainContentFocus: MainPublicationFocus;\n\n /**\n * This is the URL that will appear below the asset's image on OpenSea and others etc\n * and will allow users to leave OpenSea and view the item on the site.\n */\n external_url?: Url;\n\n /**\n * Name of the item.\n */\n name: string;\n\n /**\n * These are the attributes for the item, which will show up on the OpenSea and others NFT trading websites on the \n item.\n */\n attributes: {\n // enum properties = number, string, date\n displayType?: MetadataDisplayType;\n traitType?: string;\n value: string;\n }[];\n\n /**\n * legacy to support OpenSea will store any NFT image here.\n */\n image?: Url;\n\n /**\n * This is the mime type of image. This is used if you uploading more advanced cover images\n * as sometimes IPFS does not emit the content header so this solves the pr\n */\n imageMimeType?: MimeType;\n\n /**\n * This is lens supported attached media items to the publication\n */\n media?: {\n item: Url;\n /**\n * This is the mime type of media\n */\n type: MimeType;\n\n /**\n * Add alt tags for accessibility\n */\n altTag?: string;\n\n /**\n * Cover for any video or audio you attached\n */\n cover?: Url;\n }[];\n\n /**\n * Legacy for OpenSea and other providers\n * A URL to a multi-media attachment for the item. The file extensions GLTF, GLB, WEBM, MP4, M4V, OGV,\n * and OGG are supported, along with the audio-only extensions MP3, WAV, and OGA.\n * Animation_url also supports HTML pages, allowing you to build rich experiences and interactive NFTs using JavaScript canvas,\n * WebGL, and more. Scripts and relative paths within the HTML page are now supported. However, access to browser extensions is not supported.\n\n */\n animation_url?: Url;\n\n /**\n * This is the appId the content belongs to\n */\n appId?: AppId;\n}
- # 1.3.0 - July 6th, 2022 15:45
## Features
- feat: on hidden it should not bring them back on `timeline`, `search` and `profiles`
- feat: add follower fees into global stats
- feat: extend refresh token to be valid for 7 days to allow mobile apps better UX
- feat: expose `sns` and push everywhere for third parties
- feat: add `profilePublicationRevenue` and `profileFollowRevenue`
- feat: huge refactor to make backend a monorepo
- feat: add dev-portal-api
- feat: add sns notification service to listen for streams of data
- feat: be more aggressive on the indexer if our node provider is down and never give up
- feat: improve error handling and tracing when indexer throws
- feat: internal API if publication hidden do not allow comments or mirrors
- feat: add source onto free text claim handles column
## Bug fixes
- fix sync issue related with NFT profile
- fix: when commenting on post pull in the `appId` if we can fetch it before the insert
- fix: issue with timestamp coming back as `ms` sometimes and `unix` sometimes
- fix: count was wrong for getting comments on publication
- fix: issue with app id not be populated on publications
- fix: `ipfs_internal_uploads_pkey` PK issue
- fix: devportal: refactor how users are added in app creation and update
- fix: resolve issue with approval followers total count
- fix: resolve validation on metadata version
- fix: throw error if `txId` is not defined
- fix: make `profileId` nullable on `ReactionFieldResolverRequest` to make querying it easier on mirrors
- fix: Error: Property 'token_id' doesn't exist.
- fix: on the indexer to handle the bug found on prod contract
- fix: issue with nft sql
- refactor: indexer events clean up and more resource friendly
- fix: bring back hidden publication when query by publication or query by tx for publication
- fix: indexer bug if resync falls over it could end up skipping blocks without checking
- fix: resolve sql error `updateProfileImageURIOnChainQuery`
- fix: resolve trigger count to on conflict do nothing on some insert cases
- fix: internal profile metadata updating
- fix: profile metadata attributes added validation
## Breaking changes
- breaking: `profileRevenue` has now changed to `profilePublicationRevenue` to make the schema clear with the new added `profileFollowRevenue`
### Actioned
- breaking change: `hasCollected` is `deprecated` you should use the `hasCollectedByMe` field resolver on the publication, this will be removed from on 1st of July 2022
- breaking change: `hasMirrored` is `deprecated` and you should use the `mirrors` field resolver passing in the profile id the user is active on, this lives on the publication, this will be removed from on 1st of July 2022
- # 1.2.1 - June 22nd, 2022 17:32
## Features
- feat: allow ability to filter on `timelineTypes`
- feat: gasless for `iris`, `teaparty` and `alps`
- feat: support new query `profilePublicationsForSale` to grab all publications for sale for a given profile
- feat: add cache headers on some internal storage to make it faster
## Bug fixes
- fix: Incorrect paginatedResultInfo when querying `whoCollectedPublication`
- # 1.2.0 - June 20th, 2022 17:45 PM
## Features
- feat: expose `hasCollectedByMe` field resolver on all `Publications`
- feat: expose `mirrors(by: ProfileID)` field resolver on `Post` and `Comment`
- feat: expose `isFollowedByMe` field resolver on the `Profile`
- advised to use the above on using `DoesFollow`
- feat: expose `isFollowing` field resolver on the `Profile`
- advised to use the above on using `DoesFollow`
- feat: extend metadata input to include `image`
- feat: allow `addReaction` to toggle the reaction
## Bug fixes
- fix: lowercase the `AppId` so sources work
- fix: update profile metadata issue
- fix: explore top collected and top commented acting odd when no random
- fix: return on-chain profile metadata link and not snapshot link
## Breaking changes
- breaking change: `hasCollected` is `deprecated` you should use the `hasCollectedByMe` field resolver on the publication, this will be removed from on 1st of July 2022
- breaking change: `hasMirrored` is `deprecated` and you should use the `mirrors` field resolver passing in the profile id the user is active on, this lives on the publication, this will be removed from on 1st of July 2022`
- # 1.1.0 - June 16th, 2022 3:27 PM
## Features
- feat: support upvotes and downvotes on the API level
- # 1.0.16 - June 15th, 2022 10:18 AM
## Features
- feat: make it easy to turn db logs on
## Bug fixes
- fix: search error `.toHexString()` throwing on search publication query sometimes