Versions
v2.8.22026-10-29patch release

Student discounts, through your school

Schools that partner with Portail can now hand their students a discount without passing around a shared code. A student opens portail.cc/students, signs in, types their name and their school, and gets a personal single-use code for the plans their school arranged. The school name doesn't have to be typed perfectly: a missing space, a dropped letter or a swapped pair still finds the right school, while a different number (School 5 versus School 6) never does. Each account gets one code, and coming back to the page shows the same code again instead of a new one. From the code card a student can go straight to checkout with the discount already applied, or copy the code and type it into the checkout page. Codes only work on the plans and billing periods the school chose, and if a student tries a plan the code doesn't cover, Portail says so before checkout opens, so nobody ends up paying full price by accident. Behind the scenes every code is its own one-time discount, so a code that gets shared in a group chat works exactly once.

615 words

New page at portail.cc/students: sign in, enter your name and school, get a personal discount code.

Small typos, missing spaces and swapped word order in the school name still match. Different numbers never do.

One code per account. Coming back shows the code you already have.

Start checkout from the code card with the discount applied, or type the code at checkout yourself.

Codes only cover the plans your school chose, and Portail tells you before checkout if a plan isn't covered.

Available in English and Russian, on phones and desktops, in light and dark themes.

Portail v2.8.2 shipped on 2026-10-29 as a patch release focused on student discounts, through your school. Schools that partner with Portail can now hand their students a discount without passing around a shared code. A student opens portail.cc/students, signs in, types their name and their school, and gets a personal single-use code for the plans their school arranged. The school name doesn't have to be typed perfectly: a missing space, a dropped letter or a swapped pair still finds the right school, while a different number (School 5 versus School 6) never does. Each account gets one code, and coming back to the page shows the same code again instead of a new one. From the code card a student can go straight to checkout with the discount already applied, or copy the code and type it into the checkout page. Codes only work on the plans and billing periods the school chose, and if a student tries a plan the code doesn't cover, Portail says so before checkout opens, so nobody ends up paying full price by accident. Behind the scenes every code is its own one-time discount, so a code that gets shared in a group chat works exactly once. 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: new page at portail.cc/students: sign in, enter your name and school, get a personal discount code, small typos, missing spaces and swapped word order in the school name still match. different numbers never do, one code per account. coming back shows the code you already have, start checkout from the code card with the discount applied, or type the code at checkout yourself, codes only cover the plans your school chose, and portail tells you before checkout if a plan isn't covered, and available in english and russian, on phones and desktops, in light and dark themes. 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.2 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.