Code Monkey home page Code Monkey logo

chat-pane's Introduction

๐Ÿค— Welcome to the repo of SolidOS

[Solid logo]

MIT license SolidOS issues Matrix

If you made it here you must already have heard about Solid. This space is home to the SolidOS code. Keep reading if you want to know:

For experimenting with SolidOS implementations, you can:

If you are looking for something else, let us try and guide you:

Further links:

๐Ÿค” What is SolidOS?

๐ŸŒŸ๐ŸŒŸ๐ŸŒŸ SolidOS is an Operating System for Solid. ๐ŸŒŸ๐ŸŒŸ๐ŸŒŸ

Solid is developing into a booming ecosystem which involves specifications ๐Ÿ“ƒ, tech stack ๐Ÿ› , servers ๐Ÿ’ป, and apps ๐Ÿ•น. We, the SolidOS team, believe that this ecosystem also needs an Operating System.

When you get a new phone, PC, or tablet, they usually come with an operating system that provides some basic functionality to get started and be productive. More importantly, you can personalize your OS to your needs, by installing apps, managing content, and much more.

Solid is not shipped with a piece of hardware (who knows, maybe in the future it will...). For now, you get into the ecosystem once you create a WebID and provision your own personal data store (often called a "Pod") (see getting started with Solid - get a pod). Immediately after getting your new Solid WebID and Pod space, SolidOS is helping you to navigate the Solid ecosystem.

SolidOS is much more. SolidOS showcases the possibility of Solid for the future, by which we mean โ€”

  • true data ownership โ€” management of personal data & authorization control
  • avoidance of vendor lock-in to services โ€” easy moving to a different Pod or WebID provider
  • data reuse between applications โ€” with help of data interoperability and data discoverability

Watch a SolidOS explanation video as part of the Solid World event series.

What you can do today with SolidOS

Take a look at an example: SolidOS project Pod. SolidOS implemented features:

  • ๐Ÿ“ฐ create a personal webpage
  • ๐Ÿ“ manage your WebID and the data about yourself
  • ๐Ÿ“ manage personal data/files on your Pod
  • ๐Ÿค directly connect and engage with other people who are part of the ecosystem (add friends, chat, ...)
  • ๐Ÿ’ก make use of interconnected apps
  • ๐Ÿ”ง create your own app with Inrupt's Solid Reach SDK or get inspired from a blog post
  • and more (see SolidOS user guide)

SolidOS vision, mission and roadmap

Read more about the current SolidOS ๐ŸŒŸ vision, goals ๐ŸŽฏ, and roadmap ๐Ÿš— on the SolidOS project Pod.

Note: SolidOS is also known by names like Data Browser (default) or Databrowser, and at times as mashlib. Which name is used depends on which flavour of SolidOS you are referring to:

๐Ÿ‘ฉ๐Ÿฝโ€๐Ÿ’ป SolidOS technical intro

The SolidOS stack contains โ€”

It also makes use of โ€”

Let's take a look at an architecture diagram of SolidOS: SolidOS architectural overview

A colorful dependency tree can be seen here: SolidOS dependencies

As you can see, SolidOS is composed of several repositories:

  • rdflib.js โ€” Javascript RDF library for browsers and Node.js
  • solid-logic โ€” core business logic of SolidOS
  • mashlib โ€” a solid-compatible code library of application-level functionality for the world of Solid
  • solid-panes โ€” a set of core solid-compatible panes based on solid-ui
  • solid-ui โ€” User Interface widgets and utilities for Solid. Building blocks for solid-based apps

In the above diagram, SolidOS is deployed on the Node Solid Server (NSS), but it can also be set up to run on the Community Solid Server (CSS) or on ANY Solid-compliant server. When you download and compile the SolidOS code, an NSS is also installed locally, to have everything ready to develop.

SolidOS deeper technical topics

For further details about each GitHub repository, please visit them via the links above for Documentation.

We collect SolidOS code good practices and know how in SolidOS documentation pages.

SolidOS FAQs part of the SolidOS developer guide also contains some Q&A and technical troubleshooting infos.

๐Ÿ‘ฏ How the SolidOS team works

First and foremost who are the contributors of SolidOS?

The SolidOS codebase has a long history and there have been a lot of contributors over the years (see: GitHub contributors). The most active team members are mentioned in the SolidOS Team on the SolidOS Pod Contacts.

SolidOS team meetings

The SolidOS team meets every week for a 1h touchdown. We discuss what was done over the past week, what needs to be done next, and delegation of tasks. Find the meeting time and link on the SolidOS project Pod.

We take minutes on our meetings. You can find them on the SolidOS pod.

SolidOS team instant chat

In between team meetings, we avidly communicate over at the gitter SolidOS channel. Drop by to chat with us, ask questions, or simply say "Hi".

SolidOS team discussions

Sometimes some ideas need an incubation period and further discussion. We make use of GitHub discussions for that.

SolidOS tasks

For daily tasks, we have a Project Board with different views.

For a longer-term roadmap, we use a Solid task manager, and plan the next milestones on Kanban.

Additional useful information

๐Ÿ™‹๐Ÿฝโ€ How you can contribute and help SolidOS thrive

The SolidOS team is always looking for volunteers to help improve SolidOS. Pull Requests (PRs) and edits are always welcome from code, to text, to style. We are looking for UX designers, technical writers, frontend developers, backend developers, DevOps. Don't let these titles intimidate you; they are just some examples. You can find your own place no matter the level of knowledge you are at.

To check for tasks you might help with immediately, look at the Newcomer View in the Project Board. You are welcome to visit us at a weekly team meeting or on the ongoing Gitter-based chat to say 'Hi' or let us know about any blocker you might have encountered.

For anyone up to writing some code

We keep track of stuff to do in Git issues of each repo. An overview you can find on the project board.

Writing tests as a way to understand the code is always a good idea. Tests, in each repo, should be found in the test folder. One can start from there or/and add tests.

Note: Please get familiar with coding and testing guidelines.

For anyone who likes builds or GitHub CI or releases or deployments

There is an existing process and codebase in place to help with SolidOS releases. However, we would like to get better and automate as much as possible. Open issues can be found on the Project Board under the CI category.

Note: Please get familiar with release guidelines.

Builds

SolidOS contains different repositories (mashlib, solid-logic, solid-ui, solid-panes, ...). Each repository contains a package.json with scripts. Most repos contain an npm run build which is used to build the project.

GitHub CI

When you push or PR a change to a repo, a git CI is activated and runs every time. An example is the solid-panes workflow. This CI YML can contain instructions to test and build the repo on different Node versions. If upon push or PR, an instruction fails, one should take care to fix it and keep the branches green.

Testing & releasing a new SolidOS version

In SolidOS, you will find a bash scripts under scripts which is related to releasing a new SolidOS stack. The release script is also used to update dependencies in each repo.

Following best practices, we deploy the new version on the testserver as mentioned here.

Deployment on solidcommunity.net server

Before you start, make sure you have access to all the GitHub repos and all the npm packages. Using Ubuntu or other Unix-like OS, ssh into the server as root.

tmux new
adduser --shell /bin/bash --home /home/build --ingroup sudo build
su - build
whoami
sudo whoami

Then:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.0/install.sh | bash
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
nvm install 16
nvm use 16

ssh-keygen -t ed25519 -C "[email protected]"
git config --global user.name "Solid OS Build (Michiel)"
git config --global user.email "[email protected]"
cat .ssh/id_ed25519.pub
npm login

Log in to npm with your npm account and add the SSH public key to your GitHub account. Then continue:

git clone https://github.com/solidos/solidos
cd solidos
npm run install-nvm
npm run release

More information can be also found over at the server, solidcommunity.net, repo.

For anyone who likes writing text

SolidOS has quite some documentation around that needs constant improvement. Places to start:

We are open to suggestions to improve these resources from structure, translation, UI to content in general.

For anyone with an eye for design

Solid-ui does the heavy lifting to all things UI for SolidOS. Currently, we use Storybook to help develop components independent of other panes. Make sure to visit the solid-ui readme for information on how to set it up and get started. There is a second option to run solid-ui on its own. Read about it at Debugging solid-ui using Solid Pane Tester.

You can also find the current issues over at the solid-ui issues. And some more information over at the SolidOS Wiki.

SolidOS needs a lot of improvements on UI, including UX and style-guides. Maybe you are the one who can help out? Visit the Project Board and look for UX and UI categories.

๐Ÿ†• Getting started with the SolidOS code

Before you start coding, please review our guidelines:

SolidOS first time setup of code

Make sure you have the needed environment: nvm for SolidOS, npm, Node. If you have problems with node versions on the Apple M1 chip, in the Troubleshooting SolidOS you can find a solution.

git clone https://github.com/solidos/solidos
cd solidos
npm run setup

Note: It might prompt you to install a specific node version, something like nvm install xxx # version missing mentioned in console log.

Note: In case of errors, try to follow what the output messages (errors) suggest in the console to fix the problems, and let us know on the SolidOS team chat.

Run the above lines in a terminal of your choice to setup your SolidOS project folder. By default, some dependent repos are also set up for you:

  • rdflib.js: Javascript RDF library for browsers and Node.js
  • solid-logic: core business logic of SolidOS
  • pane-registry: an index to hold all loaded solid panes
  • mashlib: a solid-compatible code library of application-level functionality for the world of Solid
  • solid-panes: a set of core solid-compatible panes based on solid-ui
  • solid-ui: User Interface widgets and utilities for Solid. Building blocks for solid-based apps
  • node-solid-server: the server that allows you to test your changes

You can start your server and test out your code with:

npm start

If you get into problems check out SolidOS FAQs or ask us directly at SolidOS team chat.

Note: The NPM scripts are using bash scripts. These might not work if you're developing on a Windows machine. Let us know, over at SolidOS team chat if you want support for this.

How to use SolidOS on localhost

Once you managed to get SolidOS running locally (npm start) you can see it over at https://localhost:8443/. If you encounter any problems make sure to check the Troubleshooting SolidOS page.

To work on localhost, first you need to register a local user, so hit register on https://localhost:8443/. After you have created your user, you can navigate to your new pod over at https://username.localhost:8443/. Whenever you need to login again, remember to put https://localhost:8443/ in the Enter the URL of your identity provider: input field. Otherwise you will be logged in with a different provider and redirected out of the localhost environment.

How to make changes in repos

As a newcomer, you do not have direct access to the repos, but you can still contribute through Pull Requests (PRs). First, navigate to the repo you want to work on, and create a fork. Make your changes on your fork, and then create a PR. We will be notified, and you will receive feedback on your changes. For more details on how to do this, visit the GitHub documentation, which explains it much better than we ever could.

If you do have direct access to the repos, it is usual to create a branch for your changes and then a PR. A PR helps you receive feedback and lets us know easily about any changes to the code. Read more about Pull Requests over at the GitHub documentation.

Make sure to read more about working with branches and missing repos over at the SolidOS Wiki.

Developing SolidOS code

Very likely you will want to make changes in the dependent packages/repos of SolidOS (mashlib, solid-logic, solid-ui, solid-panes...).

You have two choices:

Work directly in SolidOS

The npm start script contains a lerna command: npx lerna bootstrap --force-local which makes sure that packages are bootstrapped/taken from your local machine even if versions don't match.

If you need to bootstrap any packages again (e.g. you've run npm install in any of the projects) and don't want to stop the server, you can do npx lerna bootstrap --force-local only. You do not need to stop the server and start it again (npm start).

Another option is to start SolidOS with the npm run watch script. This triggers the watch-script for mashlib, solid-ui, and solid-panes. If you want to run watch-script for rdflib or any of the panes, you'll have to open another terminal window, navigate to the respective project and start its watch-script doing npm run watch.

The output for the watch-script can be a bit difficult to interpret since all output for mashlib, solid-ui, and solid-panes are presented in the same window. You might also consider having each watch scripts running in a separate terminal window. The downside of using this approach is that at its worst, you'll have five separate watch-scripts running (in addition to the terminal window where you started the server) when working on a pane that needs to pick up a change in rdflib. If you find this unwieldy for your setup, or require too many resources, you should consider to work in the according dependent package.

Work in the according dependent package

Any changes you do in a project need to be committed to their original repos and eventually be pushed to NPM manually (this is the part of Lerna that we do not use for this project).

Some projects require you to build a package before you can see changes, so check the various package.json files to see which scripts are available. You can usually do npm run build, and some also support npm run watch which builds a new version each time you do a local change.

Be aware, the packages depend on one another. Here's a simplified view of the dependencies:

node-solid-server --> rdflib
node-solid-server --> mashlib --> rdflib
node-solid-server --> mashlib --> solid-panes --> rdflib
node-solid-server --> mashlib --> solid-panes --> solid-ui --> rdflib
node-solid-server --> mashlib --> solid-panes --> [pane project] --> solid-ui --> rdflib

This means that if you do a change in solid-panes and want to see the result on your local NSS, you need to make sure that mashlib compiles the changes as well. Similarly, if you do changes to solid-ui, and some pane relies on those changes, you need to make sure that the pane compiles those changes, that solid-panes compiles the changes from the pane, and finally that mashlib compiles the changes from solid-panes. This quickly becomes hard to track, so we've devised a couple of ways to mitigate this.

Read about in detail how each pane can be debugged over at the SolidOS Wiki.

Testing SolidOS code

Most of the modules in SolidOS have a test script which can be called with npm run test. In some cases the tests run an ESLint command eslint 'src/**/*.ts' or a jest test or both.

Jest can also offer information related to test coverage by simply runnig npm run coverage.

You can find a repo's tests usually in a dedicated folder called test.

SolidOS build and release

The SolidOS code stack build and release are described above.

๐Ÿ“œ License

The SolidOS code is available under the MIT License.

๐ŸŽค Feedback and questions

Don't hesitate to chat with us on gitter or report a bug.

chat-pane's People

Contributors

angelo-v avatar bourgeoa avatar dependabot[bot] avatar jaxoncreed avatar labra avatar megoth avatar michielbdejong avatar mitzi-laszlo avatar sharonstrats avatar timbl avatar timea-solid avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chat-pane's Issues

Add markdown expansion

  • Try to match e.g. gitter markdown
  • Possibly store also expanded HTML for posterity, consistency

"Newest Message on Top" is hard to reverse

Once selected "Newest Message on Top" as your preference, if you want to change it back, you need to scroll down to the bottom to find the setting button, yet it is hard for the older message will load automatically.

I changed it back by looking for the setting button manually, but that does not solve the issue.

Trying to deploy Solid Chat Pane

Hi.
I'm working on building a Solid Chat with some classmates on a team.
We wanted to test your chat-pane project in order to build something similar compatible with the Solid standards.
We tried deploying it with 'npm run build' in the root folder but ran into some errors.
Any help with integrating this into an app or deploying it stand-alone?
Thanks!

Fake webId on LongChat

For Solidarity, or any LongChat on Solid, it is really easy to make a fake message as @aveltens pointed.
As the folder is open to everyone in writing, @aveltens wrote a message with a dc:creator Tim's webId. So I thought Tim has wrote the message.
And everyone can make a message with any webId.
This is a real problem, how can we be sure that the message is posted by the good webId
Screenshot_20200303-082939_Chrome

Can the server allow only writing when the webId is the same as the dc:creator ? But I use ldflex-query, that don't use batch/transaction, so how could be a whole transaction ( a group of statements ) blocked if webId is not dc:creator ?

Chat improvement ideas

A few improvement ideas to offer a better experience :

  • link to chat items
  • add response in thread
  • render markdown
  • chat store is based on year/month/day folders. Is it UTC ? local time display ?
  • members with last read time event
  • community of chats around a dedicated address book ?
    • community nickname
    • With chat groups and subgroup banned
    • Including private chats

longChat/shortChat

Following up of the matrix discussion https://matrix.to/#/!wAfwwonbRnRLYejFOR:gitter.im/$aMThy_4XD203KsjPzMEV8uX8uUqbAL7N5iuM90uYZcY?via=gitter.im&via=matrix.org&via=chat.semantic.works

There are actually 2 chats pane in SolidOS :

  • import { longChatPane, shortChatPane } from 'chat-pane'
  • longChatPane is the general chat pane used as a standalone chat
    This is the most elaborate chat and also expected to be the backup of matrix chats
  • shortChatPane is used as a simple comments pane embeded in meeting pane and tracker pane, but can also be used alone

See the copy screen :
image

To simplify we may consider having only one chat pane (longChatPane) and a comments pane (shortChatPane).

A comments pane icon

This should have no impact in existing pods either on shortChat, or on tracker be it in meeting-pane or in issue-pane.

Further code clarification could be to create a separate comments-pane by removing it from the chat-pane.
But the mintClass: ns.meeting('Chat') should be kept to not add a regression

"Strange ... not authenticated ... to read preference file"

"Strange - you are not authenticated (properly logged in) to read preference file." alert when looking at chat, when logged in as the owner of the pod.

image

Console:

(Logged in as <https://solidos.solid.community/profile/card#me> by authentication)
mashlib.min.js:17 logIn: Already logged in as <https://solidos.solid.community/profile/card#me>
/settings/prefs.ttl:1 Failed to load resource: the server responded with a status of 401 (Unauthorized)
2mashlib.min.js:17 HTTP status 401 for preference file <https://solidos.solid.community/settings/prefs.ttl>
/settings/privateTypeIndex.ttl:1 Failed to load resource: the server responded with a status of 401 (Unauthorized)
mashlib.min.js:17 Complaint: loadPubicIndex: loading public type index Error: Fetcher: <https://solidos.solid.community/settings/privateTypeIndex.ttl> Unauthorized

Add a notification when a new message comes in

This could be as simple as a sound, or a flash, or more complex like a notification popup.

I've lately been inviting my friends away from web 2.0 chat systems and onto to solid to try the dog fooding aspect.

One thing that is missing is the notification when someone has said something. Not sure the ideal way to fix this.

In the past I have played a sound when a new message comes in, which seemed to work quite well.

function beep() {
    var snd = new Audio("data:audio/wav;base64,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qJrx4KOQjahZxWbcZgztj2c49nKmkId44S71j0c8eV9yDK6uPRzx5X18eDvjvQ6yKo9ZSS6l//8elePK/Lf//IInrOF/FvDoADYAGBMGb7FtErm5MXMlmPAJQVgWta7Zx2go+8xJ0UiCb8LHHdftWyLJE0QIAIsI+UbXu67dZMjmgDGCGl1H+vpF4NSDckSIkk7Vd+sxEhBQMRU8j/12UIRhzSaUdQ+rQU5kGeFxm+hb1oh6pWWmv3uvmReDl0UnvtapVaIzo1jZbf/pD6ElLqSX+rUmOQNpJFa/r+sa4e/pBlAABoAAAAA3CUgShLdGIxsY7AUABPRrgCABdDuQ5GC7DqPQCgbbJUAoRSUj+NIEig0YfyWUho1VBBBA//uQZB4ABZx5zfMakeAAAAmwAAAAF5F3P0w9GtAAACfAAAAAwLhMDmAYWMgVEG1U0FIGCBgXBXAtfMH10000EEEEEECUBYln03TTTdNBDZopopYvrTTdNa325mImNg3TTPV9q3pmY0xoO6bv3r00y+IDGid/9aaaZTGMuj9mpu9Mpio1dXrr5HERTZSmqU36A3CumzN/9Robv/Xx4v9ijkSRSNLQhAWumap82WRSBUqXStV/YcS+XVLnSS+WLDroqArFkMEsAS+eWmrUzrO0oEmE40RlMZ5+ODIkAyKAGUwZ3mVKmcamcJnMW26MRPgUw6j+LkhyHGVGYjSUUKNpuJUQoOIAyDvEyG8S5yfK6dhZc0Tx1KI/gviKL6qvvFs1+bWtaz58uUNnryq6kt5RzOCkPWlVqVX2a/EEBUdU1KrXLf40GoiiFXK///qpoiDXrOgqDR38JB0bw7SoL+ZB9o1RCkQjQ2CBYZKd/+VJxZRRZlqSkKiws0WFxUyCwsKiMy7hUVFhIaCrNQsKkTIsLivwKKigsj8XYlwt/WKi2N4d//uQRCSAAjURNIHpMZBGYiaQPSYyAAABLAAAAAAAACWAAAAApUF/Mg+0aohSIRobBAsMlO//Kk4soosy1JSFRYWaLC4qZBYWFRGZdwqKiwkNBVmoWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3kuZGUAAAAAAAAAACU=");  
    snd.play();
}
beep();

https://stackoverflow.com/questions/879152/how-do-i-make-javascript-beep

From here is quite a cute way to do it.

Allow "Reply" to create sub-threads

Desktop: A menu at the Right of the message allows, instead of just deleting the message,

  • Delete message if allowed for this chat in its prefs.
  • Edit message if allowed for this chat in its prefs.
  • Reply to message.
  • [Hide thread]

The latter creates a new indented message input field under the original message.
When the new message is inserted, it is indented a bit to the right
When the new thread is first added, a "Reply to thread" button is added to do the same thing more easily

Also allow a Hide Thread button somewhere. Grey Triangle at left?

RDF model: a link between the two messages, stored in the chat file, or in both chat files if they are in different dated chat files.
Ontology to be decided. SIOC? Schema.org?

Model: How Telegram does this. Also look at Reddit and hacker news...

Creating new threads should be an option the creator of the chat can tun off, but default on.

You should be able to open the first message of a thread in the browser and see just the thread below it.

Remove on-pod login buttons

The user is apparently invited to log in by solid-ui's infinite-chat component or by some other part of the chat-pane (see screenshot).
Screenshot 2020-01-06 13 07 04

can't store chat members properties

missing index.ttl.acl

Since the introduction of Append only in chatRoot/.acl access to index.ttl is also Append only.
We need to make index.ttl Write to store chat members properties. with index.ttl.acl

Allow a message to be used as source for a new tracker Task

  • In the Tracker settings pane, add a feature to select a Tracker connected with the chat
  • Add a the Task icon (grey-checked box) to be action toolbar
  • When you click/press on it:
  • Offer a choice of destination trackers, including ones from the user's type indexes
  • Create a new Task in the selected Tracker, whose message is the message contents linked to the URI of the chat message.
  • Link the chat message to the Task using a triple in the chat file
  • Link the chat message to the Task using the same triple in the task state file
  • Leave the Task icon selected (like selected thumbs up) in the toolbar
  • Link that task icon to the task to the user can always find the task.

User name > User short info

User name on the chat should display a user info box with features:

  • Detailed Card info
  • View all messages (Filter all messages for the user in a view) Something I miss in Gitter.
  • Chat with user (for 1 on 1 chat) if it is possible in a group chat?

Cannot load SolidOS team chat when logged in

While being logged in as https://angelo.veltens.org/profile/card#me I cannot open the SolidOS Team Chat

image

Browser Console:

Complaint: Error: Error recording your partipation: Exception in update: Error: Update: Can't make changes in uneditable <https://solidos.solid.community/Team/SolidOs%20team%20chat/index.ttl>
Error: Update: Can't make changes in uneditable <https://solidos.solid.community/Team/SolidOs%20team%20chat/index.ttl>
  undefined
    Error: Update: Can't make changes in uneditable <https://solidos.solid.community/Team/SolidOs%20team%20chat/index.ttl>  undefined
        at e.value (https://solidos.solid.community/mashlib.min.js:1:27185)  undefined
        at https://solidos.solid.community/mashlib.min.js:19:7918  undefined
        at new Promise (<anonymous>)  undefined
        at Object.u.pad.participationObject (https://solidos.solid.community/mashlib.min.js:19:7438)  undefined
        at https://solidos.solid.community/mashlib.min.js:128:321833

It works when I load the page while not being logged in and then log in, but as soon as I reload the page the error occurs again.

improve shortChat

shrot chat-pane is embeded to be used as comments in meeting and tracker (meeting-pane and issue-pane)

The pane as not been updated to include some recent additions to the longChat.
The following functionalities could be considered :

  • edit comments
  • reply (see the matrix on going changes
  • emoticons
  • ...

I think threads are not needed.
What to do with signature when implemented in longChat ?

Merge chat views into one view

As part of the overall effort in making on-boarding and existing functionality in the data browser easier to use, we want to merge the two existing chat views (Long and Short) into one.

Small Chat Pane needs to be available

The Small Chat Pane has been hidden from the newest iteration of the Data Browser so that it is not registered at all - we want it to still be available for existing resources that utilizes Small Chat Pane, but we don't want to expose the create new Small Chat resources, since we want to merge the functionality of Small Chat into Large Chat at some point in the near future.

Track the set of chats a user is involved in

User story: Optionally when looking at a given chat, on in the root of a chat app, the user is presented with a list of chats which they use. A public list and a private list, probably.

Using the type index, or if not why not.

Check compatibility with Solidarity.

Logout not working

Shows 'logout' button again,
error Error: Missing IRI for NamedNode is shown

Ability to forward a message

Allow users to forward a message from one chat to another.

  • Resulting forwarded message should link back to the source chat.
  • Recipient's ability to join the source chat should be based on their relationship to it, eg:
    • Source chat is from user that is already a foaf?
    • Already in a chat with the source user?
    • Is the source user accepting new chat messages from non-foafs?
    • Similar questions for group chats, ie: already in the group? Group is allowing new members without invitation?

Brings up a discussion about the behaviour of multiple chats with different individuals and groups, and defining these interactions.

cannot save image with Append Error: Web error: 403

cannot save image with Append Error: Web error: 403 (All Required Access Modes Not Granted) on PUT of <https://timbl.solidcommunity.net:8443/public/Test/Chat/Test%20chat%20on%208443/2022/01/29/Image_1643491488705.png>

works with Write, but this is not acceptable because you can also delete the chat resources.

Allow semantic mention of other people in chat input

  • Maybe use @-completion (especially if provided in markdown module). In that case, autocomplete when someone types @ with the foaf:nick nicknames of the people in the chat already.

  • Maybe allow sequence 1) click on author name in a chat message 2) get popup with "View Profile | Mention | Private chat"

In either case, when mention, make the link text be the foaf:name vcard:fn of the person, and link it to their webid.

(Possibly -- also autocomplete on people in your own contacts? As a preference option)

Ability to "star" a message for you in this chat

(like in what's app chat)

Adds to a list of things I have starred for this PERSON or this group. Not visible to others...

I can use it keep track of permanent things about people by going to hs list of things I have starred in the chat with them.

-- maybe make it available not just in the chat but in contacts

UX/Design and structure

Improve the UX/Design and structure:

  • List of participants on the left
  • Main chat on the right
  • Navbar with "Chat logo" and Name pluss "Settings" as dropdown
  • Responsive
  • Consider removing user colors and find some alternative solution. The issue is readability concerns regarding web accessibility colors.
  • Remove "date/time" from user name and add it on the right as Gitter have it.
  • Do a proper user test online to find out if everything is understandable (I could do that for example)

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.