[CodeTrain](https://codetrain.ai/) / Changelog

# Changelog

Every user-facing change since launch, newest first. These are the same notes that show up on your dashboard, so nothing here is written for the website.

Sep 19, 2026feature

### A page about the tools CodeTrain runs on

There was nowhere on this site to write about anybody else's software. The compare pages are arguments about a category, the learn pages are our own courses, and across the whole site we linked out to three places, two of which were ours. So there is a new section for it. Everything that appears there is something running in production right now, including what it costs and where it has caught us out. Nothing gets a page because somebody asked for one, which is the only rule the section has and the reason it is worth reading.

Sep 18, 2026feature

### Onboard someone onto your network, not just your codebase

Onboarding could take a new engineer through a repository and had nothing to say to somebody joining the team that runs the network. It now builds the same kind of journey from the network: how it is put together, which protocols decide what, and the first real call they would be asked to take, ending in a written hand off rather than a change. Everything is read only. CodeTrain drives a connector you run yourself, holds no credential of yours, and changes nothing on any device. The part worth knowing is what happens when it cannot log in to something: the journey is refused rather than published, and it names the device and the reason. A journey that quietly skipped a router would teach a new starter something invented about a system they are about to be responsible for. You can publish anyway, and then the journey says plainly what it does not cover.

Sep 18, 2026feature

### A real router you can type commands into

Every other subject here is taught by writing the thing and running it, and networking was the exception. There is now an OpenWrt runtime alongside Python, JavaScript, Bash and the rest, and it is free like all of them. It is a real OpenWrt router rather than a simulation, with a real interface, a real address and a real routing table to read, and no route to anywhere else. A few things genuinely do not work there and the tutor knows which: ubus and logread need parts of the system the sandbox deliberately does not run, and OpenWrt's ip command is the BusyBox one, so the brief forms you might use on a desktop are not available. If a step ever asks for one of those, the tutor will tell you it is the step at fault rather than you.

Sep 17, 2026feature

### The public API now gives signed agents more room

Every client of the public API used to share one budget. An agent that signs its requests with HTTP Message Signatures now gets several times that, a client that names itself honestly in a User-Agent gets the ordinary amount, and one that does neither gets less. Nothing is blocked, and a browser is unaffected. The table and the current numbers are on the developers page, and every response still carries its own budget so a client can slow down before it is refused. robots.txt now also says what may be done with what is fetched: search and AI answers yes, model training no.

Sep 17, 2026feature

### Click a word you do not know

A tutor writing to a beginner has to use the words, and until now a learner who did not know one had two options: work it out, or leave the lesson to look it up. Terms like dot notation, dict, closure and exit status now carry a dotted underline. Clicking one opens a short definition, an example where that helps, and a link to the official documentation. It covers Python, JavaScript, Bash and the ideas that belong to no single language, and it only offers a word to a lesson written in a language that uses it. Nothing is sent anywhere to fetch a definition, so it works at the same speed as the rest of the page.

Sep 17, 2026feature

### Pick what you want to get better at, and start there

The dashboard used to name one first lesson and the study screen offered three different ones, so which lesson counted as your first depended on which button you pressed. Both doors now show the same four, each one a real lesson you can finish in five or ten minutes: finding a bug that a passing test hides, Python from the start, JavaScript from the start, or the terminal. Picking one is also the only question CodeTrain asks you, which is why it is the tile rather than a screen in front of it. Your first lesson is still free and still does not count against your monthly total, and the walkthrough now points things out beside your work instead of dimming the page first.

Sep 16, 2026feature

### A new hire is only asked to change your repo at the first win

An onboarding lesson opens with the real file's contents already in the editor, so a hire reading through a service could type over a module without meaning to, and at the end of that lesson the tutor offered to write it back to the repository. On a short file it could offer to replace the whole thing with one line of practice. Now only the first-win lesson can propose a change to your repository: the one the journey is built toward, and the one your team dashboard reports as the early win. Every other lesson stays in the sandbox copy. The guard behind it was widened at the same time, so a proposed change that would cut a file down to a fraction of itself is refused rather than offered, whatever the size of the file.

Sep 11, 2026feature

### You can buy extra usage when a month runs out

When a month's model usage ran out, the only ways forward were to bring your own API key or move up a plan, and neither suits somebody who just had one unusually busy week. The Plan and billing tab now takes any amount from five dollars and turns it into credits. They are the same credits contributors earn for donating lessons, they are spent automatically and only once you are past your monthly budget, and they do not expire. They cover model usage rather than your monthly lesson count, which the card says before you buy. A plan is still better value if you need the room every month.

Sep 11, 2026feature

### Your plan now says when it resets and which account you are on

A meter reading eight percent left told you nothing about when it refills, so the only way to find out was to wait. The Plan and billing tab now prints the moment your lessons and your usage come back, in your own time zone rather than ours, and the date of your next payment beside it where there is one. Those are two different dates and they are labelled as two different dates. The tab also shows the name and address the account is under, which sounds obvious and was genuinely not available anywhere in the product.

Sep 11, 2026feature

### The tutor's diagrams work again, and read better

If the tutor wrote one stray character in the wrong place, the whole reply stopped being readable and you got a wall of raw output where the review should have been, with no diagram and a confusing notice underneath it. The reply is now repaired where it can be, and where it cannot, you get one short line asking you to submit again rather than the machine output behind it. The diagrams have been redrawn too: boxes are sized to their labels instead of cutting them off, two arrows between the same pair no longer print their labels on top of each other, and the one box a step is actually about is marked. The note you see when the tutor holds back a line now says plainly that it might be a spoiler.

Sep 7, 2026feature

### Every lesson step now opens with the question it answers

CodeTrain is a Socratic tutor, but only the review half of it was actually asking you anything. The lesson text itself stated the concept and then handed you a task, so the question you were really answering was never put to you. Each step now opens with that question, in plain terms, before the explanation and the task that follow it. The question names the puzzle and never the fix: it will ask what happens when you reach into an object and a level is missing, not whether you should use a particular method. You already get this on every new lesson, with nothing to turn on.

Sep 1, 2026feature

### The home page stops assuming you lead a team

The home page opened with a headline about your engineers learning your codebase, which told anybody learning on their own that the product was for somebody else. There has always been a version written for individuals, but the link to it sat below the headline, the subheading and the buttons, so almost nobody reading the first line ever got that far. The opening lines now describe the product rather than an audience, and the two paths sit together right under the buttons: one for learning on your own, one for ramping a team. Nothing moved and nothing was removed. Both pages are where they were, and the page for individuals links back the same way.

Aug 28, 2026feature

### The tutor can show you an example again

The tutor has always refused to write your line for you, and it still does. What it was also doing was deleting any example at all: ask how to create an object and the reply came back as prose full of gaps, because the check counted names rather than asking whether the code had anything to do with your step. It now holds back only a line that writes the step you are on. An example built on names your task never mentions reaches you whole. When something is held back, it is no longer deleted either: the reply carries it behind a click, so you can read it if you decide you want it. And a reply that passes your step is no longer checked against the step you just finished, so the tutor can tell you what you could have written instead.

Aug 26, 2026feature

### Donated lessons now show up on the public course pages

When somebody donates a lesson and it is accepted, it joins a class in one of the courses. Until now it only appeared once you were signed in, because the public course pages, the class lesson counts and the sitemap were built from a separate list that never learned about it. They are now built from the same set of lessons the app serves. An accepted lesson is visible to anybody browsing the courses, including a whole course created by a donation, which previously had no public page at all. If you have contributed a lesson, it is on the site.

Aug 26, 2026feature

### Repo lessons now pick a language that can actually run them

Three things changed about lessons built from a repository URL. The language is now chosen from what is actually in the repo and what you asked to learn, instead of the single language GitHub tags the project with. If you point at a JavaScript project and ask about its build scripts, you get bash. Second, a lesson can no longer ask you to import something that is not there. Lessons about a library used to reach for the library itself, which cannot work in a browser tab with no package manager, so you would write the step correctly and still watch it fail. The tutor now teaches the idea the library implements, in plain code, checked against that project's own source, and it says which file it is modelling the step on. Third, a step now has to produce output you can see. Your code runs as one file and nothing calls your function for you, so a step that only asked you to define one printed nothing and left you with no way to tell whether it worked. A step that writes a function now also calls it and prints the result.

Aug 26, 2026feature

### pip install codetrain-cli, and the CLI now updates itself

You can install the CodeTrain CLI with pip now: pip install codetrain-cli. The curl installer still works and both put the agent in the same place, so it does not matter which you use and using both does no harm. The bigger change is that it stays current on its own. Once a day it checks whether a newer agent has been published and replaces its own copy if so, which means you no longer sit on whatever version you happened to install. Run codetrain update to do it on the spot, or set CODETRAIN_NO_UPDATE=1 if you would rather it left you alone. Four commands need no account: codetrain doctor tells you whether the service is reachable and whether this machine is set up correctly, and it will tell you if your login has expired rather than assuming it still works. codetrain version, codetrain catalog and codetrain update round it out, and all of them take --json.

Aug 26, 2026feature

### A public API, a developer portal, and every page in markdown

You can now read CodeTrain from a script instead of a browser. The course catalog, the changelog and the roadmap are available at api.codetrain.ai/v1 with no key, no account and no signup, and every response tells you how much of the rate limit you have left so a client can slow itself down rather than get refused. The full reference is at codetrain.ai/developers/, including the versioning promise: nothing inside /v1 is ever removed or renamed, and anything on its way out gets at least 90 days of warning. Alongside it, every public page now serves markdown to anything that asks for it with an Accept header, which is what an AI assistant reading about CodeTrain will use. There is a documentation index at /docs/, an about page and a contact page with the addresses that reach a real person. Lesson content is deliberately not in the API: the steps are yours to write.

Aug 25, 2026feature

### The CodeTrain Conductor Network is open

There is a Referrals tab on your dashboard now with your Conductor link in it, free tier included. Anyone who joins through it gets 20% off their first three months, and you earn 20% of the plan price for as long as they stay. On Pro that is $4.80 a month each, so five of them covers a Pro plan of your own and you stop paying for CodeTrain. Bring more and the rate goes up: 22.5% past ten paying referrals, 25% past twenty-five. Anything above your own plan is yours in cash. Two things worth knowing before you start rather than after. Your rate follows how many of your referrals are currently paying, so it moves both ways, and somebody who stops paying stops earning you anything. The tab shows every referral and what it is worth to you this month, so you can see that the day it happens. If one of the people you brought in earns their own free plan, you keep earning from them at the rate you already had. Names stay hidden unless the person chooses to show theirs, and cash payouts are not switched on yet: your balance is real and it keeps accruing, and we will ask you for payout details before we owe you anything.

Aug 25, 2026feature

### The tutor can no longer hand you the line

You write every line. Twice that did not hold: someone asked for help on a failing check and got back a working replacement they could paste into the editor and pass. The rule the tutor works from only covered handing the answer over as a question, and neither of those was a question, so it is now enforced in code as well as asked for. Most replies will look the same as before. The tutor can still quote your own code back at you, show you what the runtime printed, and name the method or flag you should be looking at, and it can still sketch the shape of an answer with the answer taken out of it. What it can no longer do is write a working line you have not written. If it tries, that line is gone before you read the reply, and a note underneath tells you it was removed. This covers hints, anything you type into the ask box, and the local agent as well as the browser.

Aug 15, 2026feature

### Your tutor now has a voice you can pick

Someone told us they kept asking for hints not because the code was hard but because they could not tell what the step wanted. That is a writing problem, so the fix is in the writing. There is a Tutor voice setting on the study screen now, and it changes how lessons are worded as well as how your work is reviewed. Plain is the new default and it is exactly what it sounds like: short sentences, a term defined the first time it turns up, and a task you can act on without asking what it meant. If you want something else, Coach notices what improved since your last attempt, the Analogist reaches for an everyday comparison before it reaches for jargon, the Socratic hardliner answers almost nothing and just keeps asking, and the drill sergeant is as blunt as it sounds and will not pretend unfinished work is fine. OG model turns all of it off and leaves the model talking the way it normally does. Your pick is saved to your account, so the local agent uses it too.

Aug 15, 2026feature

### The study screen finally says which box to type in

The start screen had a topic box and a repo box stacked on top of each other, with the repo read-depth options showing underneath both of them even when you had not typed a repo. You had to read the placeholder text to work out which half of the page was yours. There is a switch at the top now, and it shows you one door at a time. Language, model, tutor voice, difficulty and guidance always applied to both doors, but they rendered below the repo box and read like repo settings, so they have moved into one Options group that stays out of the way until you open it. Popular topics and the full course map are still there under everything, always. The screen remembers which door you used last.

Aug 15, 2026feature

### Lessons that use a library, and a tutor that knows what it can run

Two things, and the second one is a bug we should have caught sooner. The rules about what each runtime can do were only ever shown to the model that writes a lesson, never to the one reviewing your code mid-lesson. So a tutor could walk you through requiring lodash in a browser runtime that has no module system at all, which is not something you could have done and was never your mistake. It has both halves of that now. If you do try an import in the browser runtime you get a sentence explaining there is no module system rather than a parser error about module declarations. And because some lessons really are about a library, there is a Node option that runs on the server where require works, with lodash and dayjs installed. The tutor is told exactly which packages exist, so it will not send you after one that does not.

Aug 15, 2026feature

### Gemini keys, and the models a paid plan actually unlocks

Bring-your-own-key now takes a Google Gemini API key alongside Anthropic, Amazon Bedrock, OpenRouter, Ollama and any OpenAI-compatible endpoint. The local agent takes one too. Google also renamed Vertex AI to the Gemini Enterprise Agent Platform, so that option is relabelled, and both entries now say which credential they want: the enterprise one runs Claude on your own Google Cloud project and needs service-account JSON, while a plain API key only ever works with Gemini. Separately, the model picker used to hide the experimental models from other labs unless you were already paying, which meant the one place you would naturally find out about them said nothing. They are listed for everyone now, marked as needing Pro.

Aug 15, 2026feature

### See the name on your contributed lessons, and a form worth filling in

The switch for putting your name on lessons you contribute governed a name you had never been shown and could not edit. It came from your sign-in once, at account creation, and often was not there at all, so plenty of people were turning on an attribution they could not predict. There is a name field beside the switch now, and a line under it showing the exact sentence a lesson will print, fallback included. Feedback got the same treatment from the other side: both the dashboard form and the report button inside a lesson start with a short template asking what you did, what you expected and what happened instead. Every line is editable and you can delete any of it. Switching between bug and feature never overwrites something you have already started typing.

Aug 14, 2026feature

### The first lesson now walks with you instead of talking at you

The first lesson used to open with five explanation boxes about the screen and then go quiet, which left you looking at a file of code with no particular reason to think pressing Run was the next move. It is a walkthrough now. Three short boxes cover the brief, the editor and the Run button, and after that it responds to what you actually do: it points at Run, then at the output once there is output to read, then it notices when you have written the line the step asked for and tells you to try it. What it says about your work comes from watching your code run, never from guessing, so it only sounds certain when it has seen the thing happen. If you go quiet for a minute it reminds you what the step wanted, and if you are still stuck it shows you where to ask. It is marked as a tutorial throughout, and there is a way to replay the tour if you skipped it.

Aug 14, 2026feature

### The walkthrough now covers every first lesson, and knows when you are stuck

Three things. The walkthrough used to live on one lesson, so whichever of the four starting lessons you picked decided how much help you got; all four now run the same way, worded for their own first step. It also waits for a finished line before it says anything, rather than piping up halfway through one being typed. And it watches what your runs actually do: run the code twice without getting there and it tells you what is still missing, and if that does not land it shows you where to ask, which is the one place it will explain the idea without writing the line. Milestones arrive as you go, so you can see how much of the lesson is behind you.

Aug 13, 2026feature

### The tutor can draw you a picture

Some things are hard to say in a paragraph and easy to see. Two changes. A lesson can now start a step with a small diagram of how the pieces relate, which file calls which, what happens in what order, which is the thing you most want when the codebase is new to you. And when you submit, the review can come back with a picture next to the words: a trace you step through frame by frame to watch each value change, or a side by side of what your code did against what the step asked for. The diagram at the top names the parts and never the answer, exactly like the explanation above it always has. The picture that shows your values only arrives once you have written something, because working it out is the part that teaches you.

Aug 13, 2026feature

### Close your account yourself, without emailing anyone

Account deletion used to mean emailing us and waiting. You can now do it yourself from Plan and billing, and it takes effect at once rather than joining a queue. Your lessons and everything you wrote inside them, your saved concepts and revision schedule, your API tokens, your linked devices and your name and email address are all erased. Anonymised usage totals stay, because they are our accounting records, with nothing identifying left attached to them. The privacy policy now spells out how long every category of data is kept, including how long a deleted lesson can still sit in a backup before it ages out.

Aug 13, 2026feature

### A light theme, and a dashboard that opens on your next lesson

There is a theme control in the header of every page now, including the study screen and this dashboard. It remembers your choice across the whole site, so picking light on the marketing pages and then signing in no longer drops you back into dark halfway through. Dark is still what you get by default. The dashboard also opens on a Learn tab holding your next lesson and this card, with plan, seats, keys and billing moved into their own tab, so the first thing you see when you arrive is the thing you came to do.

Aug 13, 2026lesson

### A new first lesson: the bug a passing test cannot see

New accounts now start on a leaderboard whose top-three function passes its test and still scrambles which score belongs to which person. You find the damage, fix it without changing what the function returns, write the check that would have caught it in the first place, then go looking for the same trap in a different method. It replaces a print-a-greeting exercise as the first thing you meet, because sorting out a real defect in code that looks fine is closer to the work than printing Hello is. The beginner track is still there and still one click away if you are starting from zero.

Aug 11, 2026feature

### JavaScript lessons stay inside what your browser can actually run

JavaScript lessons run in your own browser, which is what keeps the free tier free, and that runtime has no package manager in it. Asking about a library used to produce a step that called that library, which then could not run. Those lessons now teach the idea the library implements and have you write it in plain JavaScript, checked against how the project's own source does it, which is the better lesson anyway: you understand what next() does by writing the chain, not by importing it. Python lessons are unchanged and still import anything Pyodide can load.

Aug 6, 2026feature

### A public roadmap and a public changelog

Everything on this card now also lives on a page anyone can read, at codetrain.ai/changelog, so you can point a teammate or a manager at what CodeTrain has actually done without them needing an account. Alongside it there is a roadmap drawn the same way the course map is, one line running from launch through what is shipped, what is in progress, and what is still being weighed up. Shipped items carry the date they went live and nothing ahead of today carries a date, because that would be a guess. If something you need is missing from the line, replying to say so genuinely moves the order.

Aug 6, 2026feature

### Send someone a lesson without asking them to sign up

The homepage carries a working lesson now. It is a real editor running real JavaScript in the visitor's own browser with real checks, on a bug that looks like it passed and did not, so a person can find out what a Socratic step actually feels like before deciding whether to sign up. The tutor's replies there are written in advance and the page says so plainly, because the one thing a preview must not do is pretend to be the model. Useful if you have ever tried to explain CodeTrain to a colleague and wished you could just hand them a link.

Aug 5, 2026feature

### Your concepts now say which ones are actually solid

The Progress tab used to show every concept you had touched as one flat row of tags, which told you what you had seen but nothing about what you could still do. It now splits them three ways: due for review, still learning, and solid. Solid means you beat it in review, not that you met it once. Concepts also stop showing up twice because the tutor worded them slightly differently on two days, so the list is shorter and truer than it was. If you lead a team, the members table gains the same signal per person, showing how many concepts are due for review right now.

Aug 3, 2026feature

### Your first lesson is on us, and it walks you through the screen

Opening CodeTrain for the first time used to mean a blank box asking what you wanted to learn, which is a hard question before you know what a lesson looks like. Now a new account gets three short beginner lessons to choose from, Python, JavaScript or the terminal, and while you work through the first one the editor, the Run button, the review and the checks are pointed out as you reach them. It is a real lesson, reviewed the same way every other lesson is, not a demo. We cover the cost of that first one, and it does not count against your ten free lessons a month. If you would rather just browse, the walkthrough is one click to skip and it will not ask again.

Jul 30, 2026feature

### Leaving a lesson no longer costs you the work

Close the tab and come back tomorrow, or pick the lesson up on another machine: your code is waiting. Every step you submit is saved, so resuming puts you back on the right step with your own work in the editor, and the earlier steps sit one click away under Your code from earlier steps. Your browser also holds on to whatever you typed but never submitted, so a reload in the middle of a thought no longer wipes it. Finishing a lesson clears that local copy.

Jul 30, 2026feature

### Ask about the exact check that failed

When a review comes back with a check unticked, there is now an Ask about this button next to it. The tutor sees the check you pointed at, what it told you last time, your code and your last run output, so the answer lands on your actual problem instead of a guess at it. Questions also stop overwriting each other: everything you asked during the lesson stays readable under Questions you asked in this lesson, and it is still there when you resume.

Jul 30, 2026feature

### Curated lessons pick the right model for you

Curated lessons no longer ask you to choose a model, because the lesson already knows what it needs. Straightforward steps use the quick model, which stretches your usage further. Lessons where the details bite, like the NumPy maths in How LLMs Actually Work, get the deeper model from the first attempt. If a step starts taking a few tries, CodeTrain brings in the deeper model on its own and says so, then drops back to the quick one on the next step. Hints and concept checks always use the quick model. You still pick the model for your own topics, repos and drills, and if you want a testing model on a curated lesson, choose it before you start.

Jul 27, 2026feature

### Choose how deeply CodeTrain reads a repo

Repo lessons now have a read-depth choice. Quick tour pulls a handful of key files and is the cheapest way to get the shape of a codebase. Deep read pulls far more of it, so the tutor can answer real questions about how things fit together. The surprising part: deep read costs more to start and then less per step, because once the context is large enough it gets reused between steps instead of re-sent in full every time. On a long lesson that works out cheaper than a tour. Both depths are available on the free tier, and the lesson header tells you which one you got and exactly which files it read.

Jul 27, 2026feature

### CodeTrain now spots what you got stuck on, and brings it back

While you work, the tutor notices which steps actually gave you trouble: where you needed hints, where you retried, where you skipped. Each of those becomes a tracked concept with a review date, and it comes back at widening intervals so it sticks instead of fading. Open Progress and any concept that's due has a Drill this button. The drill is a brand-new exercise built from what you specifically got wrong, not a replay of the lesson you already did. Get it clean and it moves further out; struggle again and it comes straight back tomorrow. Nail it enough times and it graduates to Beaten. If you also use the CodeTrain skill in Claude Code, both share one schedule.

Jul 26, 2026feature

### Competency receipts

Finish a lesson and you can download a receipt as JSON. It records which steps you wrote correctly first try with no help, where you took a hint or retried, which checks passed, and how long each step took. It is the honest version of a completion certificate: evidence of the work rather than a percentage. On Team plans, leads see the same numbers per member, including an Unaided column, because finishing a lesson and being able to do the thing are not the same claim.

Jul 26, 2026feature

### Learn from any public repo, free

There's a repo box on the study screen. Paste any public GitHub URL and the tutor reads a slice of the real source, then teaches you from that instead of a generic example. Type something in the topic box first and it aims there: 'how the API works', 'the auth flow', 'how tests are structured'. Leave the topic blank for a tour of the codebase. Secrets and lockfiles are never read, and the lesson shows you exactly which files it used. For private code, repo mode with the agent runs against your own checkout on your machine.

Jul 22, 2026course

### New course: How LLMs Actually Work

A hands-on path from a single neuron to a working transformer, all in pure NumPy that runs right in your browser. Four classes, 18 lessons: neural-net foundations, tokens and embeddings, the Transformer block, then training, sampling and fine-tuning. Along the way you get paper spotlights (Attention Is All You Need, GPT-2, InstructGPT) and interactive demos. Inspired by Syntax's video I Built an LLM From Scratch.

Jul 22, 2026feature

### Richer lessons: paper spotlights, history & live demos

Lessons are more than code steps now. They can pull in a paper spotlight next to the concept it introduced, a history timeline, and small interactive demos like a tokenizer playground and an attention-weight heatmap you can poke at. Reading-only steps advance for free, so exploring the history never spends your monthly usage.

Jul 22, 2026feature

### New course map

The starter courses are laid out like a transit map: each course is a line, each class is a stop, and every stop holds hands-on lessons you type yourself. Easier to see how the pieces fit and where to jump in. And you're never limited to the map: type any topic, or bring your own files, and CodeTrain builds a lesson on the spot.

Jul 22, 2026lesson

### Three more starter lessons

Three new curated starters joined the catalog: Object-Oriented Python (classes, methods, and the dunder basics), JavaScript functions and closures, and a first taste of Linux and Bash that runs live in a real sandbox.

## What is coming

The [roadmap](https://codetrain.ai/roadmap/) covers what is being built now and what is under consideration, including the things deliberately not being built yet.

[Start free, no card](https://codetrain.ai/app/)[See the roadmap](https://codetrain.ai/roadmap/)

---

Source: https://codetrain.ai/changelog/

This is the markdown twin of the page above. Every public CodeTrain page serves one on `Accept: text/markdown`. Start at https://codetrain.ai/llms.txt for the full map, or https://codetrain.ai/developers/ for the API.
