Arona Chat
- 29 Devlogs
- 65 Total hours
It is a simple AI chat application built on modern serverless infrastructure, focusing on efficiency and low operational cost rather than system complexity or unnecessary overhead.
It is a simple AI chat application built on modern serverless infrastructure, focusing on efficiency and low operational cost rather than system complexity or unnecessary overhead.
After using the Ethereal Light theme for a while, I realized that although the core chat interface was done, many secondary pages still looked like they belonged to a completely different application.
So this update wasn’t about adding a flashy new feature, it was about finishing what Ethereal Light was always meant to be.
This is one of those updates where most users probably won’t notice every individual change, but I hope everyone notices that Ethereal Light feels even more beautiful now.
I also realized that good UI isn’t about making one page beautiful, it’s about making every page feel like it was designed together.
Confession time:
I’m a high school STEM student. I spend far more time studying math, physics, chemistry, and biology than anything related to design.
I have almost no artistic background, and I’m much more of a coder than a designer, so building Ethereal Light has been quite a journey.
Half of the CSS for Ethereal Light only exists because I kept googling, “How do I make this look less ugly?” 😭
Somehow, after countless tiny tweaks, it’s finally starting to look like the theme I imagined.
Anyway, I hope you love Arona Chat.
I’m planning to further polish Ethereal Light theme and address the suggestions mentioned in the rating feedback. Thanks everyone for the support!
Upcoming Changes:
After fixing a number of issues, the Arona Chat Public Demo is finally ready!
You can try it using the link below.
Today, I completed AronaChat v1.2.0!
Although this is only a minor version bump, it actually includes a lot of major improvements and new features.
In this update, I added multi-provider support, custom models, the new Ethereal Light theme, and many other improvements. There are still many things to polish, but I’m working hard to turn AronaChat into something that we can genuinely use in our daily lives — not just a project.
The current codebase has grown into a very complex system, so I’m planning to deploy the Public Demo version tomorrow.
But this Public Demo is not just a temporary showcase. My goal is to make it a long-term usable product. You will be able to connect your own API providers and use AronaChat with your own services.
To protect your privacy and security, the current version includes encrypted API key storage and multiple layers of security protection to keep your credentials as safe as possible.
Due to storage and cost considerations, each user will have a fixed storage quota. If the limit is exceeded, attachments will be automatically removed using a FIFO (First In, First Out) rolling deletion system.
For chat history, I’ll try my best to keep conversations stored for as long as possible while maintaining reasonable operating costs.
Thank you for following the development of AronaChat!
This is still just the beginning, and I hope it can become a tool that people truly enjoy using.
The core development work is pretty much done! I’m now moving into the final polishing phase—doing security reviews, testing everything thoroughly, and fixing all the little rough edges I can find.
Once that’s finished, I’ll deploy the new build as a public instance that everyone can use long-term. Can’t wait to share it with you all!
🌸 Devlog Update
I’m currently exploring a better and more reasonable resource limitation system, hoping to make the DEMO experience smoother, friendlier, and more enjoyable for everyone!
I’m also working on adding support for custom model providers, so you’ll be able to add your own providers and use this project as a complete long-term solution instead of just a DEMO.
Of course, this also brings some new challenges qwq
Since users will be able to add their own API Keys, I need to carefully design a secure system to make sure your keys stay safe and never get exposed. I’m planning a layered architecture with encryption, multiple authentication layers, and additional security protections.
This project is becoming much more complicated than I originally expected… but I want to build it properly instead of rushing it 🥺✨
🌱 About Storage
S3-compatible storage is really expensive qwq, so for now I’ve added per-user file size limits and a 7-day automatic cleanup system.
I know these limits are a little too strict, and I’m really sorry about that 🥲💦
I hope you can understand that I’m still a solo developer trying to keep the service sustainable.
To improve this, I’m building my own tiered storage system — Minamo 🌊
After Minamo is finished, attachment storage limits will be increased significantly, and the 7-day automatic cleanup will be removed! 🎉
If you like this project, you can follow this project or follow Minamo to receive future updates and new features 💫
Thank you so much for supporting this project! 💙
Whitelist is almost finished! There’s only a little bit left to polish, and I should have it done within the next few days. New ship coming soon™
Finally fixed the security vulnerabilities and the remaining bugs. Next, I’ll continue reviewing the codebase and finish the new theme.
I’m currently fixing a number of bugs in the new Ethereal Light theme. At the same time, I had the codebase audited by AI, which identified several critical security issues.
I’m actively working through both the theme bugs and the reported vulnerabilities, so the next public commit may be delayed a bit.
Before anything is published, I’ll also perform a full manual security review to make sure the public release is free of known security issues.
Unexpectedly discovered several critical bugs. Currently fixing them.
Fixed a bunch of UI, animation, rendering, and performance issues across the Ethereal Light theme and the Settings Panel.
Real-time reasoning topic extraction now handles unfinished Markdown chunks correctly, so active words no longer get cut off while responses are streaming. I also switched to stable React keys, which eliminates the annoying text flickering during streaming.
The scrolling lock, content clipping, and hidden input issues in Ethereal Light have also been fixed by improving layer isolation and hardware acceleration.
Finally, repeated clicks on the Save button in Settings are now automatically deduplicated, preventing duplicate requests when the same configuration is submitted multiple times within 5 seconds.
Fixed a critical bug that could allow users to perform unauthorized operations.
I couldn’t decide between a typewriter effect and a fade-in animation for AI responses, so I added both! You can now choose your preferred output animation in Settings.
I refactored the usage calculation. This fixes an issue where the per-model cost wasn’t updated automatically, while also reducing database usage.
I discovered that adding a new feature caused an existing feature to break.
To prevent similar regressions, I added smoke tests and a full end-to-end (E2E) test suite.
I am currently working on:
The next public version will take a long time to release and be pushed to the public repo. I will sync my progress via devlogs. If you have any suggestions, please tell me — they are very, very important to me!
Integrated Clerk for authentication and fixed various bugs :D
feat: optimize chat stream stability, security, and frontend rendering performance- Security: Added sensitive data redaction (masking password, secret, token, apiKey) for trace logs in backend utility request/response body parsing.
ChatSession message lists by extracting and memoizing UserMessageRow and AssistantMessageRow with React.memo, and extracted static Markdown plugins outside of render scopes to eliminate redundant parsing.useShallow selectors across App, ChatInputArea, and ChatSession to prevent unnecessary re-renders.Added a Demo Mode that allows guest access via a password-based login.
Release 1.1.0
This update focuses on enhancing usage tracking capabilities, introducing flexible service tiers and budget management, and delivering deep performance optimizations for the chat experience.
🌟 New Features
Usage Aggregation: Added persistent tracking of total requests, prompt/completion tokens, and total cost (USD) within user profiles, including a detailed breakdown by model.
Service Tiers: Introduced OpenRouter Service Tier support to balance cost and performance:
Flex (0.5x cost): More affordable, but potentially slower or less reliable.
Default (1.0x cost): Standard service level.
Priority (2.5x cost): Fastest response times and highest priority.
Temporary Daily Budget: Added the ability to set a temporary budget override for the current UTC day, allowing short-term flexibility without altering long-term settings.
Usage Sync Tool: A new “Recalculate Usage Statistics” feature in the settings allows users to force a backend scan of all records to synchronize aggregated totals.
⚡ Performance Improvements
Streaming Render Optimization: Implemented a buffering mechanism using requestAnimationFrame in useStore, shifting high-frequency streaming updates from “immediate trigger” to “frame-synced updates,” significantly reducing re-renders and improving UI smoothness.
Refined Auto-Scroll: Overhauled auto-scroll logic in ChatSession to distinguish between session switches, message count changes, and active streaming, ensuring smoother scrolling behavior.
🎨 UI/UX Enhancements
Session Management:
Pagination: Session list now uses lazy loading (“Load More”) instead of loading all sessions at once, improving startup speed.
Quick Actions: Added Pin and Archive capabilities in session menu for better organization.
Settings Panel Upgrade:
Advanced Tab: Introduced a new “Advanced” tab for system maintenance tools and technical information.
Budget UI: Improved budget settings interface with detailed cost multiplier explanations and a dedicated temporary budget input.
System Info: Added visibility for Instance ID and Schema Version.
🛠️ Technical Changes
Backend Architecture: Modularized routing and migrated chat sessions to a Durable Object-based implementation for better state consistency.
Database Migration: Updated user profile schema to support usage aggregation (Schema v13).
Shared Types: Updated UserProfile and ChatGenerationSettings types to support new tracking and configuration options.
First Public Release!