Code Monkey home page Code Monkey logo

opencast's Issues

bug: Links followed by a period break.

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.

bug: delays in indexing times can cause keys to get lost when creating new signer

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.

feat: author replies should be bumped to the top

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

chore: topics response should be paginated

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

feat: view-only mode

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

feat: presist cast draft

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

feat: edit profile data

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:

  • Display name
  • Profile image
  • Bio
  • Username (fname/ENS)

feat: search on mobile

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

securely store signer keys

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

Unable to login with Ethereum.

When I click login with Ethereum I see this pop-up but there is no button to click to confirm the login. I can switch chains and it will tell me to switch back to optimism, and clicking outside of the popup just closes it but doesn't log me in.
image

feat: pull to refresh feed

Pulling down when at the top of a feed should behave like other apps on mobile where it forces new content to be fetched

chore: change topics page icon to #

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.

feat: support client attribution via onchain signers

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.

feat: top users per topic on topic detail

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

opencast db

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

  • Sharing signer keys between sessions (can be moved to server, if #32 is implemented)
  • Storing user preferences (theme, mute lists, bookmarks)

Storage options

  • Postgres - would make it interoperable between clients
  • IPFS + pointer in a farcaster user data field
  • IPFS + pointed on an L2
  • ?

shift-enter doesn't work.

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.