Versions
v2.8.32026-10-31patch release

Student discounts find the right school more often

Three small fixes to how portail.cc/students matches the school name a student types. First, Uzbek names written with the acute accent as an apostrophe, like o´rta or Ulug´bek, now read the same as o'rta and Ulugbek. Before, that one character split the word in two and the school wasn't found at all. Second, a bare name that fits a school and a high school with the same name now asks which one you mean. If Sodiq School and Sodiq High School both offer codes, typing just Sodiq used to quietly hand out a Sodiq School code. Now the page asks for the full name, the same way it already did when the two places were a school and an academy. Typing the full name, Sodiq School or Sodiq High, still goes straight to the right one. Third, the other names a school accepts are now all checked. If a school lists a short name such as Sodiq as one of its accepted names, typing exactly that short name now finds that school, even when another place called Sodiq Academy also offers codes. Before, only the school's main name was compared, so the student was asked for the full name even though they had typed one the school accepts. If two different places both list the same short name, the page still asks which one you mean rather than picking one. None of this changes who can get a code: each school's codes still only go to students who name that school, and a different number in the name never matches.

650 words

School names written with ´ as the apostrophe (o´rta, Ulug´bek) now match.

A bare name that fits both Sodiq School and Sodiq High School asks for the full name instead of guessing.

Typing a short name a school accepts finds that school. If two places share that short name, the page asks which one.

Portail v2.8.3 shipped on 2026-10-31 as a patch release focused on student discounts find the right school more often. Three small fixes to how portail.cc/students matches the school name a student types. First, Uzbek names written with the acute accent as an apostrophe, like o´rta or Ulug´bek, now read the same as o'rta and Ulugbek. Before, that one character split the word in two and the school wasn't found at all. Second, a bare name that fits a school and a high school with the same name now asks which one you mean. If Sodiq School and Sodiq High School both offer codes, typing just Sodiq used to quietly hand out a Sodiq School code. Now the page asks for the full name, the same way it already did when the two places were a school and an academy. Typing the full name, Sodiq School or Sodiq High, still goes straight to the right one. Third, the other names a school accepts are now all checked. If a school lists a short name such as Sodiq as one of its accepted names, typing exactly that short name now finds that school, even when another place called Sodiq Academy also offers codes. Before, only the school's main name was compared, so the student was asked for the full name even though they had typed one the school accepts. If two different places both list the same short name, the page still asks which one you mean rather than picking one. None of this changes who can get a code: each school's codes still only go to students who name that school, and a different number in the name never matches. The work is recorded here because small releases are still product history. They change how people sign in, read responses, pay for access, share conversations, open files, or trust the system when something goes wrong.

The main changes were direct: school names written with ´ as the apostrophe (o´rta, ulug´bek) now match, a bare name that fits both sodiq school and sodiq high school asks for the full name instead of guessing, and typing a short name a school accepts finds that school. if two places share that short name, the page asks which one. That list is intentionally plain. It names what changed without turning the release into theatre. When a release fixes a build, a redirect, a storage path, or a UI edge case, the value is often that users stop noticing the problem. The archive keeps that invisible work visible enough for future debugging and for anyone checking whether Portail has cared about the details over time.

This version also fits into the wider Portail contract. One account, one chat history, and one model picker only work if the smaller pieces keep their promises. Authentication has to fail clearly. Billing has to count honestly. Uploads have to arrive in a form models can read. Admin tools have to show the operator what happened instead of hiding it behind a blank screen. v2.8.3 moved that contract forward in its own narrow lane.

The screenshots attached to this entry show the public release record as it now appears on portail.cc. For older releases, this archive was rebuilt from the git history, package version changes, release modal text, and commit subjects. That means the page is honest about its source: it documents the shipped change and preserves the record going forward, even when the exact old production screen cannot be recreated from a single saved image.

The practical result is simple. Someone landing on this page can see the version number, date, release tier, headline, highlights, and a real rendered screenshot of the archive page. Search engines can index the post through the canonical URL, sitemap entry, and structured data. Future releases now have a standard to meet before deploy, so the history should get cleaner from here instead of fuzzier.