Welcome page is not shown on the main page anymore.
Describe the bug Usually if you modify the chainlit.md on the root directory of the project it serves as the Welcome Page. With the new update, this markdown is hidden under the sidebar, under the button Readme.
To Reproduce Steps to reproduce the behavior:
Install chainlit with pip install chainlit
Create a new empty directory
Create a file demo.py with the content:
import chainlit as cl
@cl.step(type="tool")
async def tool():
# Fake tool
await cl.sleep(2)
return "Response from the tool!"
@cl.on_message # this function will be called every time a user inputs a message in the UI
async def main(message: cl.Message):
"""
This function is called every time a user inputs a message in the UI.
It sends back an intermediate response from the tool, followed by the final answer.
Args:
message: The user's message.
Returns:
None.
"""
final_answer = await cl.Message(content="").send()
# Call the tool
final_answer.content = await tool()
await final_answer.update()
Run with chainlit run demo.py -w
Expected behavior The Welcome Page text, which is part of the chainlit.md file, should appear when the website loads.
Screenshots
Desktop (please complete the following information):
- OS: macOS, Sonoma 14.5
- Browser Firefox
- Version 1.1.300
Ideally we'd be able to have markdown + starters. My guess is that is complicated so the markdown was simply removed.
I've got the same question. In this new version, can I keep rendering my chainlit.md in both places (main page and sidebar) or not? As far as I could understand, it isn't possible anymore, right?
Add this to a .js file specified as custom_js:
document.addEventListener('DOMContentLoaded', function () {
// Add a delay before simulating the click
setTimeout(function () {
// Simulate a click on the existing "readme-button"
var readmeButton = document.getElementById('readme-button');
if (readmeButton) {
readmeButton.click();
}
}, 1000); // 1-second delay
});
I think there is no longer any way to have a welcome message despite the chainlit.md not reflecting this
Any updates here?
We are on our own. Read this:
https://github.com/Chainlit/chainlit/pull/1346#issuecomment-2358864007
This project does not have a feedback loop between the core devs and the community. If we want features we have to code them and submit the PR and hope they review/merge. Same goes with features that get taken away like this one without prior community involvement or notification. We have to add it back and hope it aligns with their vision for Chainlit, whatever that is.
This approach has not been communicated widely anywhere so now it's up to me I guess. Without monetization of Chainlit, this feature degradation will continue in favor of literal AI which is monetized. I also share your frustration. Many of us invested a lot into Chainlit when we were being heard, features were being added (exclusively by Willy), and the future looked bright, but that started going away in January and has completely stopped since June.
only solution for me: moving back to version chainlit==1.0.401
Yes, Chainlit/LiteralAI has abandoned this project before ever releasing a production-ready version of it, although this is claimed on their website and in the readme. They are completely without a sense of honesty, integrity, or accountability. I've been doing this for a long time and I've honestly never seen such a negligent and barbaric handling of a project.
Also, in addition to removing features and carelessly releasing breaking changes, the last 3 releases had critical regression bugs.
So, we are indeed on our own, and @dokterbob has taken a fundamentally hostile and self-absorbed approach to managing this project, as I've commented on other issues. His words on many issues seem to indicate that he thinks the community owes him something or that we're just freeloaders and that the community's quite natural expectations are somehow unreasonable. It's a self-destructive, uninspiring, and counterproductive attitude that tends to ignore the facts of the situation.
Also, given that he was responsible for the last 3 disastrous releases, it's hard to say that the project is in good hands and with a solid vision. I'm hoping for the best, but projects with poor leadership and incompetent and inconsiderate devs don't tend to do well.
This would be a great opportunity for someone to move this project/community to a fork and to lay out a clear roadmap. In my assessment, @dokterbob doesn't have the right temperament or skills and clearly, Willy and his LiteralAI devs just don't care what happens here.
I disagree with your perspective. In my experience, this framework has proven to be a powerful and indispensable tool. While no project is perfect, the strength of open-source communities lies in collective effort and contribution. It’s precisely through collaboration that we can address issues, fix bugs, and make the framework even better for everyone. Criticism is useful when constructive, but we should focus on how we can contribute to making the project stronger. Rather than tearing down the work that has been done, let’s channel our energy into proposing solutions and sharing knowledge to ensure the framework continues to thrive.
I completely agree with you regarding the project itself. So, I'm not tearing down the project, I'm just commenting specifically on what I've seen as I've monitored this project over the last 2-3 months. More specifically, what I've seen regarding the character, commitment, and abilities of the people who are behind the project.
This is why I suggested, for the health of the project, that perhaps it should be maintained by someone else. In my assessment based on my experience, this is a constructive suggestion that could likely make the project stronger. So, I hope someone is inspired to go for it.
For some context, I've commented on several issues in the last couple of months and given the team multiple opportunities to clarify their thinking, but they have refused to comment and have also deleted some of my posts. I've also commented on several other systemic problems on various issue threads, so it's just hard to trust that continuing to work with them is a good idea.
Overall I agree with you @stephenrs and I'm glad we're beginning to speak up. I've never seen a project ignore the community so hard while simultaneously release breaking changes that nobody asked for. I don't agree with the assessment of doktorbob however, this problem is fundamental and driven by leadership and started months before he joined. Like you said, they simply don't care what happens here, because this project makes no money. Literal is a startup with 10 employees. That's like $1M/year in salaries alone minimum. There's 0% chance they're profitable hence the abrupt departure of Willy from Chainlit - the $0 revenue project. Which is a shame because Willy is a truly world class dev and wrote literally 95% of the Chainlit code.
Now we have a project controlled by people with no roadmap. All Ive heard talk of is splitting out the data layer into a community controlled repo. Why? How many of the 350+ issues and countless discord requests are about the data layer? 0. It's all about the frontend/API. So why would us non-literal employees spend time developing something that can just be ignored/closed by the literal devs. What purpose do the literal devs serve regarding Chainlit? And finally to your overall point about forking this, if this current state is the way it's going to be then why do we need the literal devs at all...
You've made some excellent observations @hayescode, but one thing I think is missing is that, as far as I can tell, we have to consider dokterbob to be a part of the failed leadership you mentioned. I've asserted multiple times on various issues that dokterbob is being compensated by Chainlit/LiteralAI, and no one has corrected me or denied it. More importantly, I've been closely following his activities on github since the first day he announced that he had joined the project as a maintainer.
The first thing he did was start entering new issues that were unrelated to the nearly 400 issues that the community needed to be addressed. It was immediately clear that he was gearing up to execute a strategy/agenda that was unrelated to serving the interests and needs of the community. This is not surprising, because it's hard to imagine that Dan and Willy would bring him in unless his role was to serve the interests of CL/LAI, which have now diverged from the needs of the community. I've also written extensively about how I think dokterbob's immature and self-interested approach is a toxic influence on this community, so I won't repeat myself.
More specifically, dokterbob's clear initial focus was on how to simplify the project by removing extraneous functionality (such as the data layer as you mentioned). This tends to point to the big problems that CL/LAI currently has, and why their interests are no longer aligned with the interests of the community:
1. Chainlit is a bloated and unsustainable project in its current form
One reason there are so many open issues is that the project tries to do far more than it should do, so there are critical/blocking issues everywhere, I've written about this extensively on other issue threads. So, CL/LAI knows that without a larger team, they will never be able to address all of the open issues. So, the best option for them is to drop many of the features that the community depends on and is struggling with and perform an architectural redesign. This will obviously leave a lot of people in the community stuck where they are. This is their road map, but they haven't told us this for obvious self-serving reasons.
However, a more thoughtful roadmap could serve both the interests of the community's shorter-term needs, while also trimming the project to a more sensible scope that strengthens it and makes it more sustainable in the longer term (I've noted this on other issue threads).
2. LiteralAI is a feature, not a business
LiteralAI is completely indefensible from competition as a business because there is nothing extra special about it, and they have already lost the first-mover advantage. Many startups end up realizing this too late. We can expect that there will be ample alternatives to LAI for LLM observability and that larger players will make it hard for LAI to acquire customers and to compete. For example, I use DataDog for app/infrastructure monitoring and they recently released an LLM Observability feature (https://www.datadoghq.com/product/llm-observability/), and it's hard to imagine that every other metrics/monitoring platform won't do the same (NewRelic already has), in addition to other small players popping up.
Maybe CL/LAI has a pivot or a larger strategy in mind, but that so far has not emerged. So, given the above problems, I'd expect that the startup pressure is quite high, and as you point out, they have a significant cash burn to worry about. So their focus needs to be on LAI in order to make an attempt at survival (or another round of funding). Turning their back on this community as they have done is obviously a long-term strategic mistake, but they might not have any better option in the short term. And, their lack of clear and honest communication is short-sighted and suicidal.
So, I completely agree with you that this project is currently without viable leadership or support, and we can consider the CL/LAI team to be completely absent and unnecessary, including dokterbob. This suggests it's a great time for someone from the community, with the community's interests in mind, to fill this void. I'd be willing to enthusiastically support anyone who wants to fill a primary leadership role on a fork, but I'm unable to fill the primary role myself due to other professional commitments.
The readme button is now more evident in the latest release. Also since then starters have been added to welcome the user.
Add this to a .js file specified as
custom_js:document.addEventListener('DOMContentLoaded', function () { // Add a delay before simulating the click setTimeout(function () { // Simulate a click on the existing "readme-button" var readmeButton = document.getElementById('readme-button'); if (readmeButton) { readmeButton.click(); } }, 1000); // 1-second delay });
Thank you very much, sir. This worked perfecly! I will have to learn JS as well 🥇