My name is Kam, I’m the author of Release Pages. I made a simple app that takes your GitHub commits and turns them in to release pages. See (react.releasepages.dev). I decided to build this after I’ve had customers in the past ask about how to stay updated to the product. I wanted a simple place for people to view releases and change logs without having to manually write and update them. The workflow right now is pretty simple you add a GitHub action file in your repository that runs git log and a curl command to my api. Then you choose a release cadence i.e weekly, bi-weekly, or monthly. On those cadences we group your commits and generate release notes for you. In total I’ve tested it out with a few friends the onboarding flow takes less than 5 minutes.
I decided to use a GitHub workflow setup instead of an Oauth flow in the beginning because Github api doesn’t have granular enough permissions to only fetch the git commit messages. The minimum permission I could get for the commit messages was entire repo read access. I wanted to make sure I’d only fetch the minimum information for first version for private repositories. For future versions and in particular for open source and less privacy concern projects I’d want to support a simple Oauth integration which would make onboarding easier.
Some technical notes: I built this with react, typescript, tailwind, shadcn, Nextjs, Postgres. I spent quite a bit of time trying to figure out a clean way of sending git commit with minimal code so that it was easily legible to developers. Since onboarding process requires to run some commands I’d wanted to make sure that it was clear what the code was doing. The core command boiled down to: ``` git log -10 --pretty=format:"%H<SEP>%s<SEP>%an<SEP>%ad" --date=iso > commits.csv curl -X POST -H "RELEASE_PAGE_SECRET" --data-binary @commits.csv https://www.releasepages.dev/api/webhooks/github ``` I spent a day or two wrestling with trying to get a clean one liner with json and csv. The problems became the escaping character regex became more and more complicated. Eventually I realized I could just use custom delimiters for css which made the entire problem much simpler.
The current version is free. In the future I want to release a version where you can upgrade to your own domain and custom branding. Additionally I want to support an automatic newsletter generation as well with the releases and commits to automate this entire flow. I’ve had customers ask for a release newsletter but I never had the time to put one together. The goal here is to automate some of the manual workflow around customer communication.
This is a really early version of the product so would love any feedback. Please email me at help@releasepages.dev if you have any issues or would like to get updates when we get the premium versions
Check it out at https://releasepages.dev
My name is Kam, and today we’re excited to launch an AI accountability buddy that helps keep you in check and holds you accountable. We originally launched Karl (https://www.heykarl.xyz/) as an AI companion but realized the use case was too broad. After talking to some users and collecting feedback, we decided to explore the direction of using Karl as an accountability buddy.
Prior to building Karl, one of my friends and I were manually checking in with ourselves daily to ensure we accomplished one goal we had discussed. Although it didn’t help me accomplish all of my goals, I noticed that there were times when, without the check-in, I wouldn’t have taken action. Our goal with Karl is to provide that nudge and reminder to keep you focused on your goals.
Currently, you can text Karl, and he will check in with you every morning at 8 a.m. and evening at 8 p.m. in your time zone. We charge $10 a month for Karl to cover server costs and the use of GPT on the backend.
We track how often you accomplish your goals and provide weekly feedback on your performance.
In the long term, we want to experiment with the best times to keep you on task and identify patterns that make you most productive based on your unique personality traits.
Let us know what you’d like to see from Karl! We’d really appreciate your feedback. You can get started by texting Karl at +1 (844) 619-7958.
We created Karl because we found it incredibly helpful to have a sounding board and someone I could talk to anytime, day or night.
Karl isn't meant to replace real friendships but rather to act as a mediator and an additional point of contact. He remembers important details you share and can connect the dots between past events and current decisions.
Anyone can message Karl by texting +1 (844) 619-7958 . There’s no separate app or website – just text to start a conversation. The first ten messages are free, after which Karl charges 10 per month to continue (and to help cover Karl's dining habits).
On the backend, we primarily use 4o (OpenAI) to handle message flow and identify important memories. All the code for LLM calls, context management, and tool use is custom-built, as we found frameworks like Langchain to be too much overhead.
Moving forward, we plan to run a fine-tuned 4o-mini model and experiment with other providers. Texting is powered by Twilio (and FYI – getting a non-sandbox phone number is quite a process), and we use Postgres (via Supabase) to store conversations and context. The entire service runs on Render.
We’re also working on new features like proactive check-ins and smarter memory handling.
Karl is currently in early alpha. We'd love feedback from the HN community at hello@heykarl.xyz. Please say hi, and we hope you have some great conversations!
Modern workplace messaging apps (like Slack) are based on IRC, which is great for small groups, but as it scales, breaks down quickly: you either get overwhelmed by notifications or you have to turn them all off. Most chat apps have threads tacked on but aren't built from the ground up with this design in mind. We wanted to create a thread-first experience where you can organize and prioritize conversations so that you are not reliant on notifications to make sure you don’t miss anything.
In apps like Slack, you have to check activities, channels, threads, and replies just to make sure you aren't missing anything important. We designed every message in Linen to belong to a thread, so it makes it easy to centralize everything in a single location. We let you select which channels you subscribe to from your inbox. This way, your inbox only has the important channels. This makes it easy to keep track of conversations without having to rely on notifications to make sure you don’t miss anything.
We also wanted a better way to separate urgent vs. non-urgent communication. In Linen, we have introduced the concept of a !mention that is designed for urgent/time-sensitive messages. A !mention will send a push notification, whereas an @mention will show up in the person’s inbox. This allows us to encourage more async conversations and reduce the need for the number of push notifications. We also designed the mention system closely with the inbox so that even if you aren’t subscribed to channels, mentions will still appear in your inbox. This is great for joining partner teams where you don’t need to view every conversation but do need to respond when you are mentioned.
We believe that most messaging apps are secretly to-do lists in disguise; you have to read, respond, or do some task when you receive a thread. We wanted to give you the ability to manage threads individually. We let you mark each thread as done, which hides them from your inbox and is useful to keep track of tasks. You also can set reminders and mute threads with one click/key. With these features, we make it easy to get to a zero inbox state. This combined with the inbox makes it easy for you to keep track of conversations and make sure you don’t miss anything.
Linen is designed for power users. We love keyboard shortcuts and want an experience that is keyboard-first. For many, the messaging app is the app that is used the most. We believe that you should be able to use Linen for an entire day without touching the mouse. We’ve added modern features like CMD+K for navigation. We’ve designed Linen to be fast and lightweight. Our gzipped bundle size is 400KB, so it's fast on first load, and we’ve introduced multiple layers of caching to make sure things are fast on subsequent loads.
We’ve been working hard on this app for the past 6 months, so there are still gaps in the platform. But we’re also very excited about the direction we can take. Our focus is on what a modern message platform built in 2024 should look like and what lessons we can take from the previous decades of IRC and messaging apps. If our message resonates with you, we would love for you to give us a try at https://www.linen.team/signup?callbackUrl=%2Flinen, where you can join our public community and come say hi!