stephancill / opencast Goto Github PK
View Code? Open in Web Editor NEWA fully open source, self-hostable Twitter flavoured Farcaster client
License: MIT License
A fully open source, self-hostable Twitter flavoured Farcaster client
License: MIT License
If a cast includes a URL immediately followed by a period, the period gets interpreted as part of the URL and the URL then no longer works.
While technically a URL can end in a period, I think it is uncommon enough that it should not be included if it is the last character. Same for other punctuation like ?
, )
, ;
, :
, etc.
It is worth noting that Warpcast correctly leaves the period off of the link.
Currently there is no way for a new user to create a farcaster account on opencast.
This can be implemented by making a call to the Bundler
contract, which registers an FID, rents storage, and registers a signer in one transaction. https://optimistic.etherscan.io/address/0x00000000fc04c910a0b5fea33b03e0447ad0b0aa
A brand new signer keypair is generated on mounting of the sign in with warpcast/ethereum component. This means that if the modal closes for some reason while waiting for the new signer transaction to be confirmed/the warpcast API to respond, the key will be lost.
This key should be persisted with an expiry time and loaded while the expiry time is not in the past. On mount, the component should check if the key in localstorage has been indexed, and if so, should add it to the list of signers and skip the step of registering it as a new signer.
Instead of unilaterally sorting all replies to a cast by date in the cast detail, cast replies should show author replies to the parent cast above other user replies, similar to other platforms
Builds fail on railway.app on nodejs versions higher than 16.x
The topics page should be able to load more topics by scrolling instead of only returning the top N topics.
This will also require a change to the cast editor- which is currently downloading all topics and filtering client side - and the introduction of a topics search endpoint in the API
The 'Add Account' button in the account switcher component maps directly to sign in with warpcast component. Instead, it should map to a modal which lets the user select a method to sign in.
You should be able to browse content without having a signer for the app
Will require view-only states for the components that trigger write actions and might require disabling features that depend on the signed-in user's FID
Save a draft of the current cast in the local storage to prevent it from being lost as soon as the cast editor is closed
The draft should be stored in local storage in a JSON object where the key is the hash of the cast that is being replied to so that drafts can support different contexts
It should also be cleared once the cast has been posted
The ability to edit profile data should be implemented. The UI for this already exists in https://github.com/stephancill/opencast/blob/main/src/components/user/user-edit-profile.tsx
The appropriate message generation functionality needs to be implemented in this file https://github.com/stephancill/opencast/blob/f4e251fe4de7d1183fa8540f055029f4b5cf0aee/src/lib/farcaster/utils.ts
There is an example implementation of registering an fname here: https://github.com/wojtekwtf/farcaster-signup-demo
User data that should be editable:
Check warpcast documentation on docs.farcaster.xyz to ensure we are using the correct url in the warpcast login component
Initial report https://warpcast.com/deanpierce.eth/0xc2b8d355
The small screen responsive state of the app doesn't provide access to the search bar. I recommend creating a search page at /search
and adding it to the sidebar
Currently signer keys are stored in plaintext in local storage. They should be encrypted with a password instead
A challenge with implementing this change is being backwards compatible with existing keys - otherwise all users would have to issue a new signer, which has an associated fee since it requires an onchain transaction
The mobile sidebar should contain the account switcher component to expose that functionality on mobile
Pulling down when at the top of a feed should behave like other apps on mobile where it forces new content to be fetched
Topic resolver should expose an IPFS gateway to use instead of hard coding ipfs.io
Currently the topics (aka channels) page's icon in the sidebar is a speech bubble. A # is a more widely recognized symbol for what topics represent.
https://opencast.stephancill.co.za/ appears down. I get a 503 response and this page displayed:
To reproduce: upload 2 images in the cast creator input via copy + paste
Signer attribution needs to be updated to support indexed on-chain signers.
This will require the database schema to be updated to support the latest replicator, this can be done using Prisma's db pull
command. Each signer has a requester FID in its metadata, which points to the application that authorized the signer. This FID needs to be resolved after the signer is looked up in the /api/tweet/<id>
API handler and the app's name needs to be passed in the client
attribute of the response.
The topic detail page should show some of the top users in the channel based on the amount of engagement that they get on their casts in this channel
This can be implemented in the form of a ?full=true
query parameter on the /topic
API endpoint and the introduction of a new TopicFull
type which returns some extra details about a topic, only to be loaded on the topic's details screen.
The extra details in this case would be an array of User
objects, topUsers
, which is the top 5 users in the channel.
It can be displayed in the header of the topic detail in a way similar to the 'followers you know' component on the user profile detail/tooltip with the overlapping user profile images
Currently opencast exclusively functions on data stored in the protocol, onchain, or IPFS
Having a mechanism to store opencast-specific data would allow for some great ux improvements such as
Storage options
Holding shift while pressing enter in a webapp normally forces a newline and prevents submitting the form. WHile OpenCast has enter do a newline rather than submitting, the habit to shift-enter still exists for many users and thus should work even if it isn't necessary.
Currently, if you hold shift while pressing enter (Windows, Firefox), no newline is added. You must release the shift key and take a risk that pressing enter won't submit the form in order to get a newline.
Call to Action:
Make shift-enter add a newline.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.