geekgene / mewsfeed Goto Github PK
View Code? Open in Web Editor NEWFor the calm cats
Home Page: https://mewsfeed.social
For the calm cats
Home Page: https://mewsfeed.social
We need to choose which languages we want to support in the "official" UI, and get translations made of all application strings.
Add a popup with the agent profile when user hovers a mention in a mew
Reduce flakiness of ci tests by:
sleep()
calls (waiting on holochain/tryorama#167)Yarns threads / gitbranch view
This is taken from the previous project management doc. I imagine this relates to a Yarn thread splitting and two sub threads going in different directions, but will need more clarification.
A user can pin up to X yarns on their profile page. Pinned yarns are displayed prominently on their profile, towards the top of the page.
Always display the identicon of a user's AgentPubKey on their profile page.
This avoids the risk of people impersonating other users by copying their profile name and avatar.
Consider refactoring DNAs to make it as easy as possible to upgrade integrity zomes and port data into a new DHT.
We may not want to facilitate this at all, and instead rely on coordinator zomes fetching the underlying data from a prior versions running cell.
If we did want to facilitate migrating data into subsequent version's cell, I think this means not relying on ActionHash as the "id" for some data, and instead storing a UUID within the Entry, and then linking from a UUID anchor to the Entry itself.
Add a notifications drop-down panel or notifications page linked from the navbar.
This should display a list of recent data changes that relate directly to my agent:
I wonder if this feature is what we really want, instead of #66.
The UX should make it clear that deleting a mew does not actually delete the underlying data.
I think there is an additional pattern for Participation Protocols that doesn't neatly fit into #62, and #63. This is "optimistically" approve a Mew response, but allow people to attach "flags" those responses Flags can then be used to softly filter what content a user sees, or they can be used to issue warrants.
One option could be that the Mew author specifies the types of flags supported for their content, and default filtering rules for different flags.
A page to facilitate the discovery of other users -- particularly for when a user is new to the app, and is not following anyone yet.
This page should be linked to from the HomePage.
The UX should expose some semi-random collection of user accounts, so the user can find a few interesting to them to follow
A page for a single username that displays all agents who have that username.
This page should be linked to from each agents profile page who has that username.
If a Mew is part of a larger Yarn, it should have an icon that links back to the original Mew (in it's Yarn view)
A user can create an arbitrary List which contains a title, description, and list of elements. The elements can be agents, Mews, hashtags, cashtags, or some combination.
Note: waiting on public release of NomDeNet
Enable username registration (via NomDeNet) as a revenue model, and to manage disambiguated ownership of names
Let's make everything coherent and consistent for the first release. :)
Allow users upload an image as part of their mew.
Overview
This also opens up the risk of users uploading illegal content to the DHT, which then is hosted by other peers. This is a major concern for a large global DHT and needs to be carefully considered.
Profile avatar, bio, and location should all be optional
Currently a user has to create a profile to use the app. Instead a user should be able to view the welcome screen with content and agents' profiles without creating a profile.
Only when a user wants to react to a mew or create a new one, should they be prompted to create a profile.
Currently the UI follows a client-server model where it fetches
Todo:
Refactor state management to poll periodically and in pages of 10 mews and maintain global state in the store which mews feeds on different pages access for display.
Details to be specified.
Create a We-Applet front-end for interacting with MewsFeed.
The only difference between the We-Applet UI and the standard UI, is the we-applet allows an individual user to mark their mews as "syndicated to MewsFeed", which will publish their Mews to the global "official" mewsfeed instance.
We may also want to use DNA properties to specify settings for a local MewsFeed instance. For example:
Note this depends on #117
Refactor mew input field handling of links such that:
^label
^label
becomes the label for a link which points to the entered URLCurrently, mew text is limited to 200 characters in validation rules. Let's add that limit to the UI CreateMewField.
Create chat rooms for pre-defined group of agents to chat together in private.
We will likely want to use elemental chat or kisuna for the actual DNAs.
It makes sense to split Participation Protocols into a few classes:
This ticket outlines the Hard Rules ruleset. The ruleset should be sufficiently flexible to support a wide range of actual use-cases of rules, without needing to fork the integrity zome.
In order to achieve this, when publishing a Mew, the author must include their chosen Rules for participation. Those rules published in an Entry which must exist on the DHT. Then, upon validation, we do a must_get_
call on the rules Entry, and apply the validation rules specified within it.
Deterministic Rules
Architecture
struct Mew {
...
response_ruleset: EntryHash,
approval_signatures: Vec<ActionHash> // signed valid actions from the approved_by_agents, where the entry is a MewApproval and the MewApproval's MewContent matches this Mew's content
}
struct ResponseRuleSet {
name: Option<String>,
description: Option<String>,
rules: Vec<ResponseRule> // If *any* of theses rules fail validation, the response is invalid
}
struct ResponseRule {
agents_allowed: Vec<AgentPubKey>, // block list takes precedent over allow list (i.e. if an agent is both allowed & blocked, they are blocked
agents_blocked: Vec<AgentPubKey>,
response_types_allowed: Vec<MewType>,
response_types_blocked: Vec<MewType>,
content_allowed: Vec<String>, // both mew content text and content rule are compared as lowercase strings
content_blocked: Vec<String>,
approved_by_agents: Vec<RequireApprovalRule>, // require a signature by these agents "approving" the Mew
approved_by_agents_threshold: Option<u64>, // None means that **all** agents must approve, Some(u64) means that at least that number of agents must approve
}
struct MewApproval {
mew_author: AgentPubKey, // author of mew content
mew_content: MewContent, // MewContent that is approved
approved_by: AgentPubKey // agent authoring this MewApproval
}
Currently, when hovering over a link in a mew, we display the full URL that is linked to.
Ideally we would display an image preview of the website, instead. This would require fetching the remote site, generating an image, and displaying that image to the user.
Create some documentation to help guide users on how to use MewsFeed.
Ideally we would have a static "complete" version that a user can read through entirely, as well as "snippets" which can be viewed inline while using the app, by clicking a "help" icon.
Interface to run a full-text search on Mew content.
This will require some peers to provide indexing services to the DHT, or provide an elasticsearch / meillasearch instance to the DHT, such that consumer users can query them for search results
It makes sense to split Participation Protocols into a few classes:
So each agent's personal ParticipationProtocolSoftRules Entry is private on their source chain, and outlines their own personal filtering of their own perspective of the DHT (i.e. what is displayed in their UI).
Possible Agent Perspective Filtering Rules
Consider replacing node test runner we're currently using 'tape' with another that offers better output for failing tests.
Some options I like:
$cashtag transaction accounting
- tx grammar
- accounting nodes
This is ported from our prior project management document which was light on the details. My guess is this means that a user can create a mew "send 25 $HOLOFUEL to @jimbo" which will initiate an actual currency transaction from their wallet app.
This is waiting wallets and currencies to exist on holochain
I asked ChatGPT for how to do this.
To integrate a Discord channel with a GitHub repository, you can use a webhook. A webhook is a way for an application to send data to another application in real-time. In this case, GitHub can send notifications to Discord whenever certain events happen in a repository, such as when a new pull request is opened or when a commit is made.
Here are the steps to set up a webhook between GitHub and Discord:
I get stuck at 5. Can't seem to find the settings for the repository and I suspect it's due to missing permissions for me. @mattyg can you look whether you have them there?
Here's the web hook URL: https://discord.com/api/webhooks/1086614464155103333/2GpqP-M5jHDzR_YYc-fcX23IJS0a0xlA7bVMwTMg__GoPiOOHAoCJ0Z2jkHnumvneKff
It occurs to me that twitter and mewsfeed are both deeply individualized architectures, and our Participation Protocols ideas (#62, #63, #64) will only encourage greater individualization and social isolation (i.e I only interact with people I want to in ways I want to).
I would like to imagine possible "bridging" mechanics: ways to facilitate individuals from different social contexts interacting together in co-determined ways that are mutually valuable
Ideas
Resources
Use tailwind (+ daisyui for theming?)
Originally by @mattyg , Collab edited by @harlantwood, @dauphin3, @jost-s --
@harlantwood & @dauphin3 are working on integrating TrustGraph 🎉 in #104
Collecting thoughts -- about the initial integration and beyond -- in one place.
[Hard Pass]---[Meh]---[Awesome]
which mirrors the underlying scale: -1.0 to 0 to 1.0
.include_trust_atoms
argumentClone & extend the concept from twitter of Trending lists.
Overview
A mew author can update the contents of their Mew
Currently the Yarn page only shows responses to that original Mew (i.e. 1 level of depth).
It might be nice if you could not only view those responses, but also the responses to those responses (i.e. > 1 level of depth), all from the same page.
We'll want to think about constraints to the UX (i.e. max levels of depth displayed by default), aiming to avoid a very large unconstrained dht query to fetch all the responses to a very active yarn.
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.