UmaKuma

UmaKuma Updates

What shipped, newest first

Every release gets a version number and a Japanese codename that walks the gojūon in order. Select a release to see what changed.

September 2026227 releases
  • v0.415.0Weight the words people actually meetてぢかなごいTejika na Goi2026-09-04

    The blend weighted a newspaper corpus at 1.0 against anime at 0.7, on the reasoning that print carries the widest written vocabulary. True, but it pays off only for somebody who gets far enough to read a newspaper, and most learners will not - they will watch. Media now leads: global and anime at 1.0, drama 0.8, movie and manga 0.7, newspaper down to 0.5. Levels 1-10 barely move, because the commonest words are common everywhere. Levels 11-30 gain uriKire, yomikata, oujo, giniro and lose kougyou, koukyou, shiten, shinrigaku to later levels - drama vocabulary up, business register down.

    Area
    platform
    Name
    てぢかなごい · 手近な語彙 Tejika na Goi · the vocabulary closest to hand
  • v0.414.0WaniKani's order joins the orderingつみあげのじゅんじょTsumiage no Junjo2026-09-04

    Within a JLPT band the ladder sorted by school grade then raw frequency, ignoring the one signal that encodes which characters build on which: WaniKani's own teaching sequence. It now sorts band, then grade, then WaniKani level, then frequency, then strokes. Grade inversions fall in every band - N4 from 18 to 8, N3 from 645 to 619, N2 from 424 to 400 - and the opening reads better: level 2 is now the numbers and simple shapes clustered together rather than scattered.

    Area
    platform
    Name
    つみあげのじゅんじょ · 積み上げの順序 Tsumiage no Junjo · the order things stack in
  • v0.413.0A kanji the JLPT skips is not therefore hardちつじょのがくねんChitsujo no Gakunen2026-09-04

    The JLPT lists 2,211 characters and we teach 2,235, so 227 have no N level - and all of them were swept into the final band, levels 51-100. Right for the 158 secondary-school and 33 name kanji among them; badly wrong for fourteen. The worst was the 24th commonest character in Japanese, taught in Japanese schools at grade 2 and by WaniKani at level 3, sitting at UK91 because an exam does not list it. A kanji with no JLPT level now falls back to the year Japan teaches it in. It moves to UK8, and no grade-school kanji is stranded past level 50. The ladder also now records which band decided each placement, since for these fourteen it is not the JLPT one.

    Area
    platform
    Name
    ちつじょのがくねん · 秩序の学年 Chitsujo no Gakunen · the school year sets the order
  • v0.412.0Japan first, then a way through to the other countriesたちよりTachiyori2026-09-04

    A flat row of every country was fine at three and cramped at seven, and would be a wall at thirty with the one country the site is about lost inside it. Japan stands on its own at the front; everywhere else is reached by naming a part of the world first, then the country, with Done to collapse it again. Whatever is open stays visible even when it is neither Japan nor in the part being browsed. Requested 2026-09-04 by John, twice.

    Area
    games
    Name
    たちより · 立ち寄り Tachiyori · a stop along the way, then on to the country you wanted
  • v0.411.0Double-click zooms where you pointそこへSokohe2026-09-04

    Double-clicking the map only worked on a region, and it re-centred on that region's middle - so asking to look closer at a coastline threw the whole country sideways, and a second double-click landed somewhere nobody had chosen. It works anywhere on the map now, the sea between islands included, and the spot under the pointer stays exactly where it was while the map grows around it. Alt, or Option, with a double-click goes back out.

    Area
    games
    Name
    そこへ · 其処へ Sokohe · to that very spot, and no other
  • v0.410.0Level sixteen stops dippingせいちのならしSeichi no Narashi2026-09-04

    Levels 14-18 teach kanji that unlock few words, and the vocabulary ramp reached full share by level 20 - so the early supply was spent and level 16 came up eleven words short of its target while 17 and 18 overshot repaying it. The ramp now takes 26 levels instead of 20, which banks enough to ride through that stretch. The worst dip on the whole ladder falls from eleven subjects to six, and the number of levels lighter than the one before them falls from forty to twenty-nine. Levels 15-17 read 76/74/80 where they read 84/73/92.

    Area
    platform
    Name
    せいちのならし · 整地のならし Seichi no Narashi · levelling the ground flat
  • v0.409.0The region directory is empty after lazy loadingすみずみSumizumi2026-09-04

    0.405.0 began loading a country's data only when a map draws it, and left the region list memoised on the country alone. A country's first render happens before its chunk arrives, so the empty list built on that pass was kept: the map drew forty-seven prefectures beside a panel reading All 0 prefectures. The list now waits for the data it is listing.

    Area
    games
    Name
    すみずみ · 隅々 Sumizumi · every corner of it, listed again
  • v0.408.0Radicals come first, and level one is theirsしたごしらえShitagoshirae2026-09-04

    The ladder promised a radical is taught before the kanji built from it, and that was quietly untrue for every kanji at level 1: placeRadicals puts a radical two levels early and clamps at 1, so all six level-1 kanji had their radicals in the same level as themselves - with four of them. There is nowhere below level 1, so kanji now start at level 2 and level 1 is 17 radicals and 18 kana words with no kanji at all: shapes and これ/それ/はい, nothing to cross-reference. 8,424 radical-to-kanji pairs now checked by test, zero violations. Level 1 falls from 46 subjects to 35, against WaniKani's 80.

    Area
    platform
    Name
    したごしらえ · 下ごしらえ Shitagoshirae · the prep work, done before the cooking
  • v0.407.0An admin's ladder moves survive a rebuildさしかえのひかえSashikae no Hikae2026-09-04

    build-kanji-ladder recomputes the whole curriculum every run, so any edit an admin made would vanish on the next pnpm ladder:refresh - which made the admin console unbuildable. src/data/kanjiLadderOverrides.json is now replayed over the computed ladder, between the kanji sort and radical/vocabulary placement, so a moved kanji drags its radicals and the words that use it along without that rule being written twice. Ops are refused by name rather than guessed at: a move that would empty a level, overfill one past 29 kanji, or push a kanji outside its JLPT band stops the build. One implementation, imported by the build and the tests; a test fails if the build ever grows its own copy.

    Area
    admin
    Name
    さしかえのひかえ · 差し替えの控え Sashikae no Hikae · a record of the substitutions
  • v0.406.0The side panel draws the region's cities tooこだまKodama2026-09-04

    Turning Cities on lit the country map and left the shape in the panel beside it bare, so one switch meant two different things depending which map you were looking at. The panel is handed the very same cities the map is drawing, narrowed to the region it frames, so it follows the switch and the density without a second control to keep in step.

    Area
    games
    Name
    こだま · 木霊 Kodama · an echo: the panel answers the map
  • v0.405.0Load map data one country at a timeけいりょうKeiryou2026-09-04

    A map page loaded all seven countries at once, because geoRegion.ts imported fourteen data files at the top and built every one of them eagerly. That is three and a half megabytes, of which Canada is a megabyte on its own and the four admin-only countries are 1.6 MB a public visitor downloads and is then refused by the page. Each country is its own chunk now, fetched when a map actually draws it. Measured on production builds: Japan 3651 KB to 682 KB, the United States 3394 to 991, Canada 3421 to 1641. The gate on the pilot countries now holds at the network as well as at the page, since nobody downloads a country they cannot open.

    Area
    games
    Name
    けいりょう · 軽量 Keiryou · light to carry: one country at a time
  • v0.404.0Eighty-nine names for the same nine stagesくみひものくだんKumihimo no Kudan2026-09-04

    WaniKani calls its stages Apprentice, Guru, Master, Enlightened and Burned, and that is the only vocabulary a learner ever gets. src/data/srsThemes.json is the committed source for 89 themes, each naming all ten stages from not-started to the top - Judo belts, sumo divisions, the corporate ladder, ghosts, a theme park. Every rung carries a term, a reading, a meaning and a chip-sized short form, plus an age rating so a ten-year-old is never offered the syndicate ladder. Themes are renamed off their trademarks: the rank vocabulary is ordinary Japanese and stays, but no feature ships called Naruto. The stored SRS value never changes, so switching is instant and retroactive.

    Area
    platform
    Name
    くみひものくだん · 組紐の九段 Kumihimo no Kudan · a braided cord of nine tiers
  • v0.403.0The curriculum gets a table of its ownきばんのいちだんKiban no Ichidan2026-09-04

    The ladder lived only in a committed JSON file, so nothing at runtime could point at one of its items and no member could have progress on one. UkSubject now holds all 9,271 items with a stable id and a business key; LadderOverride is the append-only log an admin's moves will be written to. pnpm ladder:seed makes the table agree with the committed ladder and is a no-op the second time; pnpm ladder:check exits 2 on drift the way db:drift:check does. Items the ladder stops placing are marked removed rather than deleted, so progress survives an item being pulled and restored.

    Area
    admin
    Name
    きばんのいちだん · 基盤の一段 Kiban no Ichidan · the first course of the foundation
  • v0.402.0The ladder beside every other scaleかいていのぜんけいKaitei no Zenkei2026-09-04

    Our 100-level ladder had no surface at all: it was a 351 KB JSON file with a reader and a test suite, and nothing on the site imported it. /admin/data now has a Ladder dataset showing all 9,271 items - radicals, kanji and words - with our level beside WaniKani's, the JLPT band, the school year, print frequency and which source the facts come from. A stacked bar per level shows the shape of the curriculum, so a level that has grown heavy is visible rather than findable. Read-only; moving things comes next.

    Area
    admin
    Name
    かいていのぜんけい · 階梯の全景 Kaitei no Zenkei · the whole ladder in view
  • v0.401.0Cities on every map, Japan and the US includedおおどおりOodoori2026-09-04

    Cities on every map that has them, Japan and the United States included, and neither needed migrating to Natural Earth. The United States is drawn through Albers USA, which the builder rebuilds exactly and which carries Alaska and Hawaii in their own insets, so Anchorage and Honolulu land in the boxes already drawn. Japan's outlines are curated Mercator paths with no projection in code, so the transform is recovered by least squares and the build refuses to write a file unless every city sits inside its own prefecture; Okinawa's cities ride into its inset box with its outline. Cities are matched to their division by geometry rather than by name, which took France from none of 58 to all of them. A map that draws cities now credits both holders, since the outlines and the cities are not always the same one.

    Area
    games
    Name
    おおどおり · 大通り Oodoori · the main street a town is built along
  • v0.400.0Pick the showcase rows out of the source's dataえりわけのめEriwake no Me2026-09-04

    The showcase picks were hand-written constants and thirteen of their figures were wrong when checked against the data. An admin can now browse any source's rows - searched and paged, twenty at a time - and tick up to four, so the detail line the public card shows is one the data built rather than one somebody typed. Reset puts a source back to the chosen defaults.

    Area
    admin
    Name
    えりわけのめ · 選り分けの目 Eriwake no Me · an eye for picking out
  • v0.399.0Cities on the Canada mapうぶすなUbusuna2026-09-04

    Natural Earth's Populated Places drawn over the provinces, with a Cities switch and three densities beside it: 14 capitals, 46 major, or all 254. It is a true overlay because the builder makes it one - the points go through the very same projection the boundaries were fitted to, so every city lands inside the province it belongs to. Labels are placed in importance order and skipped where they would collide, and because the label box scales with the map, zooming in finds room for more names. Canada alone: Japan and the United States are drawn from GSI Global Map and Census TopoJSON on their own projections, so a Natural Earth point would land somewhere arbitrary there.

    Area
    games
    Name
    うぶすな · 産土 Ubusuna · the ground you were born on
  • v0.398.0History and Stats belong under StudyいっしょのすみかIssho no Sumika2026-09-04

    History and Stats sit under their own Progress group, but both are your WaniKani progress and belong with the studying that produced them. Move the pages for real - /users/<name>/study/history and /users/<name>/study/stats - and give Study a second row of three: Reviews, History, Stats. Progress goes away as a group. No redirects; update every caller. Requested 2026-09-04 by John.

    Area
    study
    Name
    いっしょのすみか · 一緒の住処 Issho no Sumika · the records live where the studying happens
  • v0.397.0An admin console for every sourceありかのひとまわりArika no Hitomawari2026-09-04

    The accreditation pages answer 'what do we hold' one source at a time for a reader. The admin had no way to see across all twelve at once: what is loaded, when it last came in, which upstream release it is, and what the remedy is when it is behind. Three sources are tables a request can refill and get a button; the rest are files a script writes and name their command instead, since Vercel's filesystem is read-only.

    Area
    admin
    Name
    ありかのひとまわり · 在り処のひとまわり Arika no Hitomawari · one round of where everything lives
  • v0.396.0Map cleanup and admin featuresわけまえWakemae2026-09-04

    The four pilot countries become the admin's at every entrance and actually work: the runs route took its countries from a literal ["JP","US","CA"], so every pilot start returned 400, while /maps/thailand was a public page anyone could open. One predicate answers for the lobby, the route and the page. JapanMap.tsx goes with its eight callers moved to CountryMap, and the /sources/camap redirect and alias go with it. map:build:all no longer runs the retired Canada builder over ca-map.json, and the accreditation page counts from the manifest and dates itself from the newest dataset it loads rather than the one file the builder skips. The 25 catalogue countries stay built and unloaded.

    Area
    games
    Name
    わけまえ · 分け前 Wakemae · the share that is the admin's
  • v0.395.0The catalogue says what it is missingろけんRoken2026-09-04

    The catalogue gap reopens every time WaniKani adds subjects and nothing says so. The admin catalogue panel already reports drift - missing levels, duplicate rows - and the count belongs beside them, but findCatalogGap reads every account's assignment cache and all 9,400 rows' relation arrays, so it cannot ride the status endpoint the panel polls. A button that measures on demand and reports the ids, next to the sync controls. Raised 2026-09-02.

    Area
    admin
    Name
    ろけん · 露見 Roken · what was missing, brought to light
  • v0.394.0A few rows of every sourceれいのひとつまみRei no Hitotsumami2026-09-04

    The accreditation pages said what we hold from a source and never showed any of it. Each page gets a handful of chosen specimens - the component written into 1,337 characters, the pronoun ranked 67 in anime and band 12 of 48 in print - with an admin able to override the picks per source. Chosen, never the first row of the file.

    Area
    platform
    Name
    れいのひとつまみ · 例のひとつまみ Rei no Hitotsumami · a pinch of examples
  • v0.393.0A release that refuses changes nothingるすのつくえRusu no Tsukue2026-09-04

    Taking a release number wrote four files one after another with no rollback - the timeline entry, the codename, APP_VERSION and package.json - so a failure part way through left the first two applied and the last two not. The tree looked like a release had been taken when none had, and the re-run refused because the codename it had just written was already used. It happened twice on 2026-09-03, both times because another session shipped mid-flight. Every edit is worked out first now and written only once all of them are possible, the refusal names the file it could not change, and the board row is closed after the files land rather than before - a refusal used to leave the ticket shipped and the tree unreleased.

    Area
    platform
    Name
    るすのつくえ · 留守の机 Rusu no Tsukue · the desk left exactly as it was found
  • v0.392.0World maps accreditation and country flagsりょうちのこっきRyouchi no Kokki2026-09-03

    Update Canada map accreditation to World maps, describe Natural Earth datasets across Canada, admin pilots (TH, CN, AU, TW) and 25 catalog countries, and present national flags for all 30 countries.

    Area
    games
    Name
    りょうちのこっき · 領地の国旗 Ryouchi no Kokki · flags of every land
  • v0.391.0Toggle the known, practise and visited colouringらくないろどりRakuna Irodori2026-09-03

    The study map paints a member's own marks - known green, practise amber, visited outlined - over every region, always. There is no way to turn that layer off to see the plain map, or to see one kind of mark alone. Controls to toggle each layer, in or above the map or in the side panel. Requested 2026-09-03 by John.

    Area
    platform
    Name
    らくないろどり · 楽な彩り Rakuna Irodori · colouring that is easy to switch off
  • v0.390.0The map says what it is looking atよびなのいたYobina no Ita2026-09-03

    At /maps/japan/region/kansai the only signs that Kansai is what is framed are the URL and the side panel; the map itself has no title. Put an overlay title in the map's top-left corner - there is room, and the pan hint already sits bottom-left in that style - naming the region, and the region and the province when one is chosen (Kansai · Osaka). John also suggested a leader line from the region's centre to a label, the way the game's handles point. Requested 2026-09-03 by John.

    Area
    platform
    Name
    よびなのいた · 呼び名の板 Yobina no Ita · the board with its own name on it
  • v0.389.0Cache the accreditation pagesゆとりのいちじかんYutori no Ichijikan2026-09-03

    Both /sources pages ran three Prisma reads and rebuilt a border-pair Set per map on every view, including every crawler hit. Each report is now held in process for ten minutes, which removes the repeat database work, and the index settles its readers so one dead source no longer hides eleven healthy ones. The CDN half did not land: a Cache-Control header was added and Vercel overrides it, because every page carrying PublicPageHeader is dynamic - the header reads the session - and Next sends no-store on a dynamic route. Verified against a local next start, which applies the header, and not against production, which does not. Sparing the app the request needs partial prerendering; filed separately. Requested 2026-09-03 by John as part of the source accreditation epic.

    Area
    platform
    Name
    ゆとりのいちじかん · ゆとりの一時間 Yutori no Ichijikan · an hour's grace, so one answer serves everybody
  • v0.388.0A region view should be centred on the regionやっとまんなかYatto Mannaka2026-09-03

    /maps/japan/region/okinawa opens at 3x with Okinawa sitting low in the frame instead of in the middle. The zoom window is clamped to the map's edges so a drag never shows open sea, but a region opened from its address is a fit, not a drag, and the fit should centre what it framed even if that means the window overhangs the map. Okinawa's inset sits at the bottom-left of the canvas, so any clamp pushes it down. Either let a fit overhang, or move the inset. Reported 2026-09-03 by John with a screenshot.

    Area
    platform
    Name
    やっとまんなか · やっと真ん中 Yatto Mannaka · in the middle at last
  • v0.387.0Credit JMdict and JitenもとのほまれMoto no Homare2026-09-03

    The ladder ranks vocabulary against JMdict's newspaper frequency bands and Jiten's eleven per-medium lists. Both are CC BY-SA 4.0, so a visible credit is a licence condition and neither has a page. Register both in sourceCredits, give each a reader over wordFrequency.json and copy on /sources. Requested 2026-09-03 by John as the first slice of the source accreditation epic.

    Area
    platform
    Name
    もとのほまれ · 元の誉れ Moto no Homare · the credit belongs where it came from
  • v0.386.0Choosing a region heading makes the row jumpめもりのたかさMemori no Takasa2026-09-03

    When a region heading is clicked the Open control appears beside it and is taller than the heading row, so the row grows and everything under it shifts. Replace the text button with an icon the same height as the row - a magnifier or an expand glyph - so choosing changes colour and nothing else moves. Reported 2026-09-03 by John with screenshots of both states.

    Area
    platform
    Name
    めもりのたかさ · 目盛りの高さ Memori no Takasa · one notch high, held or not
  • v0.385.0Parallel level ladderむっつのはじまりMuttsu no Hajimari2026-09-03

    A WaniKani-parallel progression over roughly 100 levels, covering the kanji WaniKani leaves out.

    Area
    jlpt
    Name
    むっつのはじまり · 六つの始まり Muttsu no Hajimari · it begins with six, and climbs from there
  • v0.384.0The audit times out and takes the deploy with itみたびきくMitabi Kiku2026-09-03

    pnpm security:check runs pnpm audit against registry.npmjs.org, and that endpoint socket-timed out three times in a row twice on 2026-09-03/04 - once in a local preflight, once in the CI verify job, which failed the whole deploy while every quality check had passed. A timeout is not a finding; it is no answer. Wrap the step in the same three-attempt retry the upload has, still red after three, and keep the schema drift check single-shot.

    Area
    platform
    Name
    みたびきく · 三度聞く Mitabi Kiku · ask three times before calling silence a no
  • v0.383.0Both, on the chip words controlまとめてならべてMatomete Narabete2026-09-03

    The control over what an item chip says offered Off, kana and English - one question at a time, which was the point of it. The objection to printing both was never to seeing the pair though, it was to having no say in it, so Both is back as a fourth choice: a chip reads しゅく / Lodging for anyone who asks for that, and the other three modes are untouched for anyone who does not. It draws through the same function the hover title has always used, so what you see when you ask for the pair and what you get on a hover cannot drift into two formats, and it falls back the way the other modes do - to whichever half the chip actually has - rather than printing a joiner with nothing on one side of it. Requested 2026-09-03 by John.

    Area
    study
    Name
    まとめてならべて · まとめて並べて Matomete Narabete · the reading and the English together, when you ask for them
  • v0.382.0Written with belongs beside RelatedほんやくなしひかくHonyaku Nashi Hikaku2026-09-03

    Written with holds radicals only, so it is the same kind of fact as the Built from group in Related and should sit next to it rather than in its own block further up. Requested 2026-09-03 by John.

    Area
    study
    Name
    ほんやくなしひかく · 翻訳なし比較 Honyaku Nashi Hikaku · two books on one question, side by side
  • v0.381.0The worksheet titles itself wrongly for one kanjiへいぜんとなざしHeizen to Nazashi2026-09-03

    A worksheet for a single character is titled Writing practice, Chosen characters, which is neither. It should name what it is showing, mentioning the kanji. Work out what every other way in should be titled too, not just this one. Reported 2026-09-03 by John.

    Area
    study
    Name
    へいぜんとなざし · 平然と名指し Heizen to Nazashi · the sheet plainly named after what is on it
  • v0.380.0Regions in the map address, and a double-click that opens oneふくむちほうFukumu Chihou2026-09-03

    The map directory groups a country into regions - Tohoku, the Prairies, West Coast - and a click now lights one. A double-click should zoom the map to it, and the address should carry it: /maps/canada/region/west-coast focuses the region, and /maps/canada/region/west-coast/british-columbia is a province chosen within a lit region. /maps/canada/british-columbia stays as it is. The explicit region/ segment is needed because Japan has a region and a prefecture both called Hokkaido, so a bare slug cannot tell them apart. Requested 2026-09-03 by John, who asked for a recommendation on the URL shape.

    Area
    platform
    Name
    ふくむちほう · 含む地方 Fukumu Chihou · the region that holds the place, in its address
  • v0.379.0The worksheet's kanji link nowhereひらいたでぐちHiraita Deguchi2026-09-03

    The characters printed on a worksheet are not links. They should go to the character's own page. Reported 2026-09-03 by John.

    Area
    study
    Name
    ひらいたでぐち · 開いた出口 Hiraita Deguchi · a way out of every row
  • v0.378.0A worksheet row can say moreはやいみたてHayai Mitate2026-09-03

    A worksheet row carries the readings; it has room for more of what is known about that character. Decide what earns the space. Requested 2026-09-03 by John.

    Area
    study
    Name
    はやいみたて · 早い見立て Hayai Mitate · place the character at a glance
  • v0.377.0The stroke order panel asks to be read twiceのぞいたさわぎNozoita Sawagi2026-09-03

    John: it looks really good but can someone guess what each thing does? Why is 10 strokes a different badge from the Worksheet button - do those belong together? Question the design and the layout, ask why each thing is where it is. Concise is good, not too busy. One idea of his: the 10 strokes label folds into the Show one stroke button, and pressing that is what reveals the ten numbered buttons. Requested 2026-09-03 by John.

    Area
    study
    Name
    のぞいたさわぎ · 除いた騒ぎ Nozoita Sawagi · the noise taken out of the card
  • v0.376.0Every section title links to its own pageねらいどおりつなぐNerai Doori Tsunagu2026-09-03

    The subject page sections have titles now and each title already has a RESTful path behind it. Offer the link: on hover a section title becomes a link to its own view, for example /kanji/X/related, and the main kanji page can be navigated from. Requested 2026-09-03 by John.

    Area
    study
    Name
    ねらいどおりつなぐ · 狙い通り繋ぐ Nerai Doori Tsunagu · each title joined to its own page
  • v0.375.0One source for how big a glyph isぬのじのものさしNunoji no Monosashi2026-09-03

    Nine sizes, none of them decided by anybody. A subject page headed itself at one size on a phone and another on a desktop; five list surfaces - study history, a saved list, what you looked at recently, a page of search results, the suggestions under the search box - each spelled the same three classes out in full, and copies age: one had quietly grown a larger desktop size the others knew nothing about, and one had lost the attribute that tells a browser its text is Japanese, which is what stops Chrome offering to translate 私自身 into "myself" and a screen reader spelling the kanji out in English. A list proposal row and a note modal each used a size nothing else on the site did. A glyph is three things now and one module owns all three: the subject of a surface, measured by length so a six-character word does not run off a phone; one of many on a browsing card; one of many in a row or on a chip. The sizing helper moved to the shared folder on the way, because a shared component had been reaching into the level explorer's private lib to borrow it. A gate in the quality check fails on a fourth size typed onto a line that renders Japanese: it found two this sweep had missed and a third that landed while the sweep was being written. A surface that genuinely needs its own shape - a game tile sized to its board, a sentence in prose, the radical picker - is named on its allow list with the reason written out. Asked for 2026-09-03 by John: reuse rather than one-offs, and go through the site rather than fixing where it is noticed.

    Area
    study
    Name
    ぬのじのものさし · 布地の物差し Nunoji no Monosashi · one ruler, and every piece cut to it
  • v0.374.0A section page is not styledにしきのひょうしNishiki no Hyoushi2026-09-03

    The Everything about X link at the top of a single-section page such as /kanji/X/related has no styling at all - it is a bare underlined link on the page. Reported 2026-09-03 by John.

    Area
    study
    Name
    にしきのひょうし · 錦の表紙 Nishiki no Hyoushi · a proper cover on the page
  • v0.373.0A radical drawn as a bar has no nameなのるかけらNanoru Kakera2026-09-03

    The vertical bar radical shows on a kanji page with an empty name, and /radicals?parts=<bar> is reached from /kanji/. Find out whether the dictionary has no name for it or we are failing to read one. Reported 2026-09-03 by John.

    Area
    study
    Name
    なのるかけら · 名乗る欠片 Nanoru Kakera · every piece says what it is called
  • v0.372.0A flaky upload leaves production behindとどけるまでTodokeru Made2026-09-03

    The last deploy step, vercel deploy --prebuilt, is a single unretried command. On 2026-09-03 it threw 'fetch failed' at 59MB of a 79MB upload; the commit was on main, CI was green, and production simply stayed on older code with nothing retrying. It only got out because another agent pushed minutes later. Because cancel-in-progress means the newest run is the one that matters, a flake on the last push of a burst is exactly the case with no second chance. Retry is safe here specifically because cancel-in-progress kills a superseded run before its retry could re-alias production to an older commit.

    Area
    platform
    Name
    とどけるまで · 届けるまで Todokeru Made · it keeps trying until the code arrives
  • v0.371.0Show readings forgets what you choseてきようおぼえているTekiyou Oboeteiru2026-09-03

    On the practice sheet the Show readings option is always unchecked when the page opens. The other options are remembered; this one is not. Reported 2026-09-03 by John.

    Area
    study
    Name
    てきようおぼえている · 適用覚えている Tekiyou Oboeteiru · the settings come back the way you left them
  • v0.370.0Stroke order opens on stroke oneつけるあしばTsukeru Ashiba2026-09-03

    The stroke picker starts with nothing picked, so the panel opens showing no stroke at all. Default to the first one: there is no point in having nothing show. Reported 2026-09-03 by John.

    Area
    study
    Name
    つけるあしば · 着ける足場 Tsukeru Ashiba · a footing to land on, not a sign saying choose
  • v0.369.0One control over a chip's wordsちゃんとよみわけChanto Yomiwake2026-09-03

    The item chips printed both halves at once - · cape, しゅく · Lodging - and nobody had chosen that: the control was on or off, and "on" meant everything the chip knew. The reading and the meaning are two different questions, and a member reading a page wants one of them at a time. It is a three-way choice now - Off, , EN - held once per browser and read by every chip on every page: the parts of a character, the words a kanji is used in, the related groups, the kanji of a place name, a paste being turned into a list. Segments rather than a button that cycles, because a cycling button cannot say what the other choices are and you end up pressing it until the page looks right. The half a chip does not print stays on its title, so seeing it costs a hover rather than a trip back to the control, and each mode falls back to the word the chip actually has - a radical WaniKani draws has a name and no reading, and asking for readings must not empty a whole row of them. Requested 2026-09-03 by John.

    Area
    study
    Name
    ちゃんとよみわけ · ちゃんと読み分け Chanto Yomiwake · the reading and the English, told apart
  • v0.368.0The stroke chart's model character is faintたていちれつTate Ichiretsu2026-09-03

    On a stroke-order worksheet the leftmost square of every chart row holds the finished character, and it is drawn faint while the same square on every practice row below it is solid. One column down the page, two weights, for the same thing. Make the chart rows match the rest. Reported 2026-09-03 by John.

    Area
    study
    Name
    たていちれつ · 縦一列 Tate Ichiretsu · one column, one weight
  • v0.367.0A single stroke's repeat looks staticそくていのそくざSokutei no Sokuza2026-09-03

    The repeat runs for one stroke but rests a fixed second after a 420ms draw, so the stroke sits finished for 70 percent of every cycle - running, and indistinguishable from broken. The rest is a share of the drawing now, capped at the old second so the whole character is unchanged. Reported 2026-09-03 by John.

    Area
    platform
    Name
    そくていのそくざ · 測定の即座 Sokutei no Sokuza · measured, not guessed at
  • v0.366.0Select a whole region and highlight itせっするけんごとSessuru Kengoto2026-09-03

    The map directory groups regions under headings - Prairies, Northern Canada, Tohoku, Kansai. Those headings should be selectable, lighting up every member on the map at once, so a learner can see a region as a shape rather than picking its members off one at a time. Requested 2026-09-03 by John.

    Area
    platform
    Name
    せっするけんごと · 接する県ごと Sessuru Kengoto · a region lit as one shape, not six names in turn
  • v0.365.0Canada is listed in French on an English siteすなおなえいごSunaona Eigo2026-09-03

    The map directory shows Canadian provinces with the French name as the headline and the English underneath - Colombie-Britannique over British Columbia, Nouveau-Brunswick, Quebec. English is the site language and should lead; Japan's kanji-over-romaji is different because the Japanese IS the content being learned. Reported 2026-09-03 by John.

    Area
    platform
    Name
    すなおなえいご · 素直な英語 Sunaona Eigo · the English name, plainly, on an English page
  • v0.364.0All 13 province / territorysしるしたふくすうけいShirushita Fukusuukei2026-09-03

    The directory heading pluralises the division name by adding s to whatever the dataset holds, so Canada reads 'All 13 province / territorys'. Noticed 2026-09-03 in a screenshot John sent about other map panel issues; he did not raise it.

    Area
    platform
    Name
    しるしたふくすうけい · 記した複数形 Shirushita Fukusuukei · the plural written down instead of guessed at
  • v0.363.0Replay does nothing on a single strokeさらにさすSarani Sasu2026-09-03

    In one-stroke mode, pressing Replay should re-draw the stroke you are looking at. Reported 2026-09-03 by John from the stroke order card on /kanji/ at stroke 2.

    Area
    platform
    Name
    さらにさす · 更に指す Sarani Sasu · points again, and says what it points at
  • v0.362.0Region thumbnails do not match the mapこだいなふちKodaina Fuchi2026-09-03

    The little shape icons in the map directory panel carry a border that makes them look poor, and they do not render the region the way the big map does - Hokkaido is the clearest case. The thumbnail path and JapanMap should draw the same shape the same way. Reported 2026-09-03 by John with screenshots.

    Area
    platform
    Name
    こだいなふち · 誇大な縁 Kodaina Fuchi · the border that grew with the place
  • v0.361.0One chip size on a subject pageけなみぞろいKenami Zoroi2026-09-03

    A kanji page drew the same chip at two sizes a block apart: the kanji inside each compound under Used in words came out at two thirds of the parts under Written with and the radicals under Built from. All of them are the same component. It had carried a size prop since the days when four surfaces drew four different chips, and folding those into one moved the disagreement inside the shared piece instead of settling it. The prop is gone and every pill is one size - the subject pages, the strip of what you have selected, a paste being turned into a list, the updates a copied list has waiting. Its dead half went with it: the small variant also asked for a narrower minimum width, which lost to the default in the stylesheet and had never once applied. Reported 2026-09-03 by John.

    Area
    study
    Name
    けなみぞろい · 毛並み揃い Kenami Zoroi · every chip in the same coat
  • v0.360.0Take the Leaderboard out of the headerくうはくからはじめるKuuhaku kara Hajimeru2026-09-03

    The header's first link is Leaderboard, and for a signed-out visitor it is the only one - so the one thing an anonymous reader is offered is the scoreboard, on a page about a kanji. John: no more attention to the Leaderboard. Take the link out of the header. The anonymous nav is then empty on purpose; John will decide what a visitor should be offered. Requested 2026-09-03 by John.

    Area
    platform
    Name
    くうはくからはじめる · 空白から始める Kuuhaku kara Hajimeru · starting from a blank row
  • v0.359.0Tickets, not wishesきっぷのきほんKippu no Kihon2026-09-03

    The board holds every piece of work, so the model, library, API and admin panel say Ticket rather than FeatureWish. The physical table keeps its name, because prisma db push drops and recreates rather than renaming. The board offers every move a ticket's state allows and says who holds it. Requested 2026-09-03 by John.

    Area
    platform
    Name
    きっぷのきほん · 切符の基本 Kippu no Kihon · a ticket, and what a ticket is for
  • v0.358.0Credit the map dataかりたさかいめKarita Sakaime2026-09-03

    The three map datasets are shown with no attribution anywhere: Global Map Japan via GSI, US Census Bureau via us-atlas, and Natural Earth. GSI's terms require both a source citation and a statement that the data was edited, and ours are reprojected, simplified and move Okinawa into an inset. Requested 2026-09-03 by John.

    Area
    platform
    Name
    かりたさかいめ · 借りた境目 Karita Sakaime · the borders we borrowed
  • v0.357.0The empty panel becomes the directoryおしながきOshinagaki2026-09-03

    With nothing chosen the map's side panel is an empty box with one line in it, on a page whose other half is a map. It should carry the whole country instead: every region as a row with its name, its kanji and its shape, in columns, at a size somebody can read. A row does what the map does - hovering it lights the region, choosing it opens the panel - so the list is a second way through the same door rather than a table of contents. Requested 2026-09-03 by John.

    Area
    platform
    Name
    おしながき · お品書き Oshinagaki · everything on offer, written out
  • v0.356.0A price with a word too manyえんちょうのめいさいEnchou no Meisai2026-09-03

    100 dollars CAD and 500 Japanese yen name one amount in three tokens, and the parser takes at most one token on each side of the number, so both answer with nothing. Low value on its own; worth doing when the parser is next open. Noted 2026-09-02.

    Area
    study
    Name
    えんちょうのめいさい · 延長の明細 Enchou no Meisai · the line item, spelled out at length
  • v0.355.0An amount written in wordsうたがわないつづりUtagawanai Tsuzuri2026-09-03

    five hundred yen and twenty thousand yen name a price as clearly as 500 yen does, and neither parses - the amount must be digits today. Depends on the number library item 44 builds, which has to read words into values anyway for the reverse direction. Romaji units belong here too: a learner types 5 man yen before they type 5万円. Noted 2026-09-02.

    Area
    study
    Name
    うたがわないつづり · 疑わない綴り Utagawanai Tsuzuri · the spelling it takes at its word
  • v0.354.0A shared ticket board, in the databaseいちばのいっせいにIchiba no Isseini2026-09-03

    Planned work moves out of featureTimeline.json into Postgres, with an atomic claim and a six-hour lease. The file keeps the shipped record, because a release entry has to land in the same commit as its code. Requested 2026-09-03 by John.

    Area
    platform
    Name
    いちばのいっせいに · 市場の一斉に Ichiba no Isseini · one market, everyone at once
  • v0.353.0Filter the releases by what they touchedあいいろのふだわけAiiro no Fudawake2026-09-03

    Every release is already tagged by area, and the tags are shown without being usable: there is no way to ask for the games work, or everything that touched search. The page lays out every area it holds with a count beside it, and choosing one filters the list. Areas only - a feature and a bug are not the same kind of tag. Requested 2026-09-03 by John.

    Area
    platform
    Name
    あいいろのふだわけ · 藍色の札分け Aiiro no Fudawake · sorted by the label it already wore
  • v0.352.0The region shape is drawn tinyわくにおさまるWakuni Osamaru2026-09-03

    The side panel draws the chosen region on its own so the shape can be seen, and the shape is a few millimetres in the middle of the whole country. The window is padded by nine tenths of the region's longest side and is nearly square, while the frame is two and a half times as wide as it is tall, so the map scales to the height and shows two or three times more country than the window asked for: Hokkaido's window comes out larger than Japan. The shape should fill the frame it is given, with only enough room around it to place the region among its neighbours. Reported 2026-09-03 by John.

    Area
    platform
    Name
    わくにおさまる · 枠に収まる Wakuni Osamaru · it sits in the frame it was given
  • v0.351.0Releases open at the month you are inろくがつのおりめRokugatsu no Orime2026-09-03

    The releases page prints every month at full length, so the page opens on a wall of entries and the month somebody came for is a long scroll away. Each month becomes a section that folds: the current month open, the rest closed, any of them toggled by hand, and the choice remembered per device so a refresh does not undo it. Requested 2026-09-03 by John.

    Area
    platform
    Name
    ろくがつのおりめ · 六月の折り目 Rokugatsu no Orime · every month folded but the one you are in
  • v0.350.0Escape puts the search awayれいぎのひきぎわReigi no Hikigiwa2026-09-03

    Escape on a focused search box empties it, and on an empty box it closed the dropdown and left the field open and focused - so the box a member wanted rid of stayed on screen, widened, with the cursor still in it. An empty box now goes away on Escape: the panel closes, the field gives up focus and shrinks back, and the phone sheet closes with it. Reported 2026-09-03 by John, who had asked before.

    Area
    platform
    Name
    れいぎのひきぎわ · 礼儀の引き際 Reigi no Hikigiwa · knowing when to leave the screen
  • v0.349.0One chip for every inline kanjiるいをよぶRui o Yobu2026-09-03

    Every inline kanji, radical or word across the site is drawn through the shared pill; hand-rolled chips and misplaced large cards are replaced.

    Area
    study
    Name
    るいをよぶ · 類を呼ぶ Rui o Yobu · like calls to like
  • v0.348.0Map kanji as pillsりったいよりひらたいRittai yori Hiratai2026-09-03

    The characters of a place name are the same small pills the kanji page uses, with the Text on toggle, not the large explorer cards.

    Area
    platform
    Name
    りったいよりひらたい · 立体より平たい Rittai yori Hiratai · the flat pill, not the raised card
  • v0.347.0The chosen region, drawn on its ownらしいりんかくRashii Rinkaku2026-09-03

    On the country map Kagawa is four millimetres of grey and Rhode Island is smaller than the word for it, so the shape - the one thing a map is for - is the thing you cannot see. The panel draws the chosen region filling its width, neighbours in outline so it reads as a place rather than a blob. Requested 2026-09-03 by John.

    Area
    platform
    Name
    らしいりんかく · らしい輪郭 Rashii Rinkaku · an outline that looks like itself
  • v0.346.0Say the answer, not just show itよみあげるねだんYomiageru Nedan2026-09-03

    A search for 500 yen answers with what it converts to and never with how to say it. The amount a learner most wants from a price is 500 and ごひゃくえん - the currency answer had no Japanese form at all when the query was already in yen, and the reading the number answer works out sat on a line the search dropdown does not draw. An answer carries its reading as its own field now, so every surface that shows an answer can say it aloud. Reported 2026-09-03 by John.

    Area
    study
    Name
    よみあげるねだん · 読み上げる値段 Yomiageru Nedan · the price, read aloud
  • v0.345.0Mark what you know, and where you have beenゆきさきのゆびさすYukisaki no Yubisasu2026-09-03

    A member marks each prefecture, state or province 'I know it' or 'Needs practice', and separately flags the ones they have been to - the map paints all three in soft greens, ambers and a blue outline. Two facts rather than one. One new table, MapRegionMark, unique per member per region. Requested 2026-09-03 by John.

    Area
    platform
    Name
    ゆきさきのゆびさす · 行き先の指差す Yukisaki no Yubisasu · pointing at where you have been
  • v0.344.0Read large Japanese numbers in searchやじるしりょうむきYajirushi Ryoumuki2026-09-03

    A number written the Japanese way - 一億二千万 - answers with the English number, and the reverse. Requested 2026-09-02 by John.

    Area
    platform
    Name
    やじるしりょうむき · 矢印両向き Yajirushi Ryoumuki · an arrow that points both ways
  • v0.343.0Okinawa stays in its box, and Escape puts a region downもちばのもよりMochiba no Moyori2026-09-03

    Zooming dropped the inset, so Okinawa left its box off the south-west of the mainland and was redrawn where it really is, on top of the coast the reader was looking at. The inset held only while the whole country was in view, which stopped being true the moment the study map could zoom. Centring had the same fault from the other side. Escape now clears the chosen region at desktop width, where there is no modal to close. Found 2026-09-03 by John.

    Area
    platform
    Name
    もちばのもより · 持ち場の最寄り Mochiba no Moyori · back to its own post, and near what you asked for
  • v0.342.0The values open under the chip you clickedめぐるめじりMeguru Mejiri2026-09-03

    Choosing a source on the practice sheet opened its levels below Trace / Stroke order / Reference, because the source chips and the sheet chips shared one wrapping nav - the list somebody had just asked for appeared under an unrelated row, two lines from the chip they pressed. Three rows now, in the order they are read. Found 2026-09-03 by John.

    Area
    platform
    Name
    めぐるめじり · 巡る目尻 Meguru Mejiri · the eye comes round to where it asked
  • v0.341.0The name's kanji, drawn like every other kanjiむだなくむけるMuda naku Mukeru2026-09-03

    The map panel drew the characters of a place name as coloured boxes of its own making: no meaning, no reading, and no way to keep one, on a site where every other place a kanji appears carries all three. It uses the shared subject card now, which brings the reading, the meaning, the link to the character's page and the filing column with it. Double-clicking a region zooms one step in on it. Requested 2026-09-03 by John.

    Area
    platform
    Name
    むだなくむける · 無駄なく向ける Muda naku Mukeru · pointed the same way, with nothing built twice
  • v0.340.0A worksheet says it came from UmaKumaみせるひょうじMiseru Hyouji2026-09-03

    The practice sheet carries no brand at all: on screen the page has the site's navigation and nothing that says UmaKuma, and on paper - where a sheet is photocopied, handed to a child and pinned to a fridge - there is nothing at all. Every other page wears the banner. The sheet wants the brand minimally on screen, the mark and the name above the title, and more minimally still on paper: one quiet line, the name and the address, in the grey the rest of the printed sheet uses, so whoever picks the page up knows where it came from and where to get another. Requested 2026-09-03 by John.

    Area
    study
    Name
    みせるひょうじ · 見せる表示 Miseru Hyouji · the sheet shows whose it is
  • v0.339.0Zoom in on the map, and get aboutまわるまどぐちMawaru Madoguchi2026-09-03

    Kanto is eight prefectures inside a thumbnail: on a whole-country map Saitama and Gunma are a few pixels of the same grey. Three zoom steps rather than a free zoom, with drag, arrow keys and +/-/0 to move around, and the window clamped so a drag that runs off the edge stops rather than framing open sea. Requested 2026-09-03 by John.

    Area
    platform
    Name
    まわるまどぐち · 回る窓口 Mawaru Madoguchi · a window you can move around
  • v0.338.0The header holds one line, whatever the widthほねぐみはうごかないHonegumi wa Ugokanai2026-09-03

    Between about 1000 and 1280 pixels the top row broke after LISTS and put PROGRESS and READ on a second line, and the section row stacked its pages into a column - so the header changed height as the window moved and the page below it jumped. Both rows now hold one line and scroll instead, the way the phone row already did, and the release codename waits for 1280 rather than taking the room STROKES needed. Reported 2026-09-03 by John, who had asked for this before.

    Area
    platform
    Name
    ほねぐみはうごかない · 骨組みは動かない Honegumi wa Ugokanai · the frame stays where it was
  • v0.337.0One sheet for a list and for a single characterへだてないますめHedatenai Masume2026-09-03

    The one-character practice sheet was a second implementation beside the practice sheet the lists print - its own page, its own component, its own row grammar (faint model leading each row, no heading line) and none of the options, so the two looked like two products. There is one sheet now: TracingSheet takes the characters it is given and a Fill the page option shares the page's rows between them - one kanji takes the whole page, two take half each - on top of whatever rows each needs of its own, the stroke chart in Stroke order mode or the trace row in Trace mode. The character page's Worksheet links into the member's practice sheet with that character picked, Stroke order on and the page filled, so it has the same header, the same Practise, Sheet and Options rows, the same square sizes and the same Print. /kanji/X/sheet, KanjiPracticeSheet and its copy are deleted. The faint-first-row grammar of 0.333.0 goes with them: the shared row is the workbook's - the finished character to copy, faint repeats to trace, blanks to write - and a variant belongs as an option on this sheet, not a fork. Requested 2026-09-03 by John.

    Area
    study
    Name
    へだてないますめ · 隔てない升目 Hedatenai Masume · one sheet, no wall between a list and a lone character
  • v0.336.0The kanji page introduces itself like the othersふだんのなのりFudan no Nanori2026-09-03

    A radical and a word open with an identity card - the glyph, the English name, its type and level as pills, then meanings and readings under a credit. A kanji opens with a bare line of text above the stroke order box, so the one page most people arrive on is the one that looks unfinished beside its two siblings. Parity is structural: the same card in the same slot, fed by what the kanji page already knows. Reported 2026-09-03 by John.

    Area
    study
    Name
    ふだんのなのり · 普段の名乗り Fudan no Nanori · introducing itself the way the others do
  • v0.335.0Worksheet goes there, Print prints, everywhereひとしいやくめHitoshii Yakume2026-09-03

    Two words for two actions, and the site had them crossed. On the list cards and the list page, Print was a link that navigated to the worksheet and asked it to open the print dialog on arrival - a button called Print that changed the page - while the stroke panel's new Print went to the one-character sheet and then did nothing, sitting in a row of its own under the drawing. One rule: Worksheet is the button that goes to a sheet, and Print exists only on a sheet, where it opens the dialog - with the scope menu where there is more than one page, as the practice sheet already does. The cards and the list page lose their navigating Print; the stroke panel's button becomes Worksheet in the header slot beside the stroke count; the one-character sheet gets the same Print button the practice sheet has. The arrive-and-print flag stays, because the sheet's own Everything choice reloads into the print layout and needs it. Requested 2026-09-03 by John.

    Area
    study
    Name
    ひとしいやくめ · 等しい役目 Hitoshii Yakume · the same job everywhere
  • v0.334.0The radicals in one runはしるひとすじHashiru Hitosuji2026-09-03

    A block per stroke count wasted most of its width on the counts holding three radicals and made the grid four screens tall, so the kanji a pick produced were never on screen with the radicals that produced them. It flows left to right with the count as an inline marker, in a bounded area that scrolls within itself - how the paper dictionaries print it and how the picker in search has always drawn it. Corrected 2026-09-03 by John.

    Area
    platform
    Name
    はしるひとすじ · 走る一筋 Hashiru Hitosuji · a single line, run right through
  • v0.333.0The practice rows lead with a faint characterのこるうすずみNokoru Usuzumi2026-09-03

    The one-character sheet ruled the whole of Now You into empty squares, which asks a child to copy from a chart four inches up the page. A workbook leads the hand before it lets go: the first practice row is the character built stroke by stroke in faint, to trace over, and every row after it opens with the finished character in faint before the blanks. Nothing below the chart is highlighted - down there every mark is something to draw, and one black stroke among them would be the only one that is not. The chart at the top keeps its black stroke, since that is what says which one is new. StrokeStepGlyph grew a ghost tone for it rather than a second component. Requested 2026-09-03 by John.

    Area
    study
    Name
    のこるうすずみ · 残る薄墨 Nokoru Usuzumi · the faint ink that stays on the page
  • v0.332.0Print one kanji as a practice sheetねるいちまいNeru Ichimai2026-09-03

    A sheet for one character, at /kanji/<character>/sheet and linked from the stroke panel. The character and its readings at the top, then every stroke as its own square the way a stroke-order chart shows it - all of them, so a twenty-two stroke character gets twenty-two squares rather than the first row - and then the rest of the page ruled into fifty-six empty squares to copy it into. The list sheets print a grid across many characters, a row each; this is the other shape, one character and room to work at it. The squares are the list sheets' own: Cell, TraceGlyph and StrokeStepGlyph came out of TracingSheet into sheetCells so both draw the same workbook square rather than drifting apart. Public like the character page it hangs off, because a parent printing a sheet for a child has no reason to sign in first, and a static segment so the stroke-order section keeps its address. Requested 2026-09-03 by John.

    Area
    study
    Name
    ねるいちまい · 練る一枚 Neru Ichimai · one sheet, to work the character into
  • v0.331.0The page says what the character is, not the stroke cardぬぐかんばんNugu Kanban2026-09-03

    Stroke order's header carried the readings and the meaning under its title - the only block on the page whose header did two jobs, now that every other card wears the same plain bar. It did that because the kanji page had no header of its own: the card was the first thing on the page, so it became one. The page names its character now, and stroke order's bar says Stroke order and the stroke count like every other card. A section drawn on its own - /kanji/X/stroke, or the panel in a modal - keeps the line, because there is no page header above it there. summaryLine moved out of the client module into lib on the way: a function exported from a 'use client' file cannot be called during a server render, which is how the page broke the first time it was wired up. Requested 2026-09-03 by John.

    Area
    study
    Name
    ぬぐかんばん · 脱ぐ看板 Nugu Kanban · the sign the card no longer has to wear
  • v0.330.0See one stroke on its ownにぎるいっぽんNigiru Ippon2026-09-03

    Holding a stroke still drew it in colour with every earlier stroke behind it in grey, which answers where in the character it falls but not what the stroke itself is - on a twenty-two stroke character the one you asked about is a coloured mark inside a nearly finished glyph. Only hides what is already down and leaves the single stroke on the page; with Outline on it sits over the faint whole character, which is the shape of the question: this stroke, there. A finished stroke becomes 'not yet reached' rather than a fourth state, because that is already what the animation knows how to leave wound back, and the numbers follow the same rule so nothing is numbered that is not drawn. Off by default - where a stroke falls is the usual thing to want - and remembered. Requested 2026-09-03 by John.

    Area
    study
    Name
    にぎるいっぽん · 握る一本 Nigiru Ippon · the one stroke, held on its own
  • v0.329.0Every radical, all the timeながめるならびNagameru Narabi2026-09-03

    The radicals page copied the stroke browser too literally: stroke counts along the top as a filter, so choosing '3 strokes' hid the other 208 radicals. That is the right control for 900 kanji at one count and the wrong one for 253 radicals, which are a set you scan - the filter hid the thing somebody opened the page to look through. No filter and no first step now; the count leads each row, the way the picker in search has always shown them. Corrected 2026-09-03 by John.

    Area
    platform
    Name
    ながめるならび · 眺める並び Nagameru Narabi · a row you can look over, leaving none out
  • v0.328.0The radicals, as a pageとりだすつくりToridasu Tsukuri2026-09-02

    The radical picker asks 'which kanji has these parts' from inside a search dropdown, which is the right shape for somebody mid-search and the wrong one for somebody who wants to see the radicals. This is the stroke browser's layout over the same index: counts along the top, the 253 radicals grouped by stroke below them, and the kanji containing whatever is picked. Picking is a link, so the state is in the address. The parts on a kanji page lead here instead of priming a search box. Requested 2026-09-02 by John.

    Area
    platform
    Name
    とりだすつくり · 取り出すつくり Toridasu Tsukuri · the parts, taken out and laid down
  • v0.327.0Every block on a subject page wears the same headerていけいのてほんTeikei no Tehon2026-09-02

    Stroke order draws its title in a header bar across the top of its card - a rule under it, a muted ground, the stroke count on the right - and every other block put a small label inside its padded body instead, or had no title at all. Meanings, Mnemonics and Related carried no heading, so a reader scrolling a kanji page met cards that looked like different components. One header bar in SubjectBlock, the one stroke order already used, and a title on every block that is a section of the page - taken from the same sectionTitles the section pages are named by, so a card and its own address agree. The right-hand slot is that panel's too: where its stroke count sits, a block's own control sits. Requested 2026-09-02 by John.

    Area
    study
    Name
    ていけいのてほん · 定型の手本 Teikei no Tehon · one header, and every card wears it
  • v0.326.0Add to lists from the explorersつんでおくTsunde Oku2026-09-02

    The filing marks now reach search, the subject pages and the glyph viewer, but not the explorer grids themselves - JLPT, grades, level and study each draw their own cards and rows. SubjectCards has renderUnder and SubjectRows has renderAfterRow, so this is passing slots rather than changing the shared pair. Split out of add-to-lists-everywhere 2026-09-02.

    Area
    study
    Name
    つんでおく · 摘んでおく Tsunde Oku · picked as you pass, and kept
  • v0.325.0The panel keeps drawing, and keeps the outlineちょっとひといきChotto Hitoiki2026-09-02

    Two switches on the stroke panel, both on and both remembered. Outline shipped a release earlier showing only while a single stroke was picked, on the reasoning that the full animation already draws its faint character - which read as the button disappearing when you left that view, and took the choice away where somebody might want the drawing clean. One switch now governs the faint character in both views. Replay was a one-shot button, so watching a stroke order twice meant finding it and pressing it again; it is a switch too, and the character draws itself over and over with a second's rest between runs - measured at 1,018ms in the browser. Without that rest the last stroke lands and the page blanks in the same instant, which reads as a glitch rather than a repeat. Requested 2026-09-02 by John.

    Area
    study
    Name
    ちょっとひといき · ちょっと一息 Chotto Hitoiki · a short breath between runs
  • v0.324.0Print is the light theme, and nothing elseたちもどるたんじゅんTachimodoru Tanjun2026-09-02

    The previous fix read 'never print in colour' as an instruction to build a printing palette: every brand colour flattened to black, every word forced black, a blanket rule over every element. It turned filled pills into solid black lozenges and spent more ink than the page it was sparing. What was actually wrong is only that the dark theme followed the page onto paper, so print now restores the ten tokens the dark theme overrides to exactly the values :root gives them, and stops. Corrected 2026-09-02 by John.

    Area
    platform
    Name
    たちもどるたんじゅん · 立ち戻る単純 Tachimodoru Tanjun · back to the simple thing
  • v0.323.0Print is white paper and black inkそめないそぼくSomenai Soboku2026-09-02

    The palette override covered the site's own tokens, which is most of a page and not all of it: a panel painted with a literal Tailwind colour never asks the tokens anything, so the amber suggestion box printed a tinted block and coloured text regardless. The default inverts - every surface white, every word black - so a colour has to be opted into rather than chased down after somebody notices it on paper. The tracing sheet keeps its greys, since its faint characters are the thing being traced. Requested 2026-09-02 by John.

    Area
    platform
    Name
    そめないそぼく · 染めない素朴 Somenai Soboku · undyed and plain, which is what paper wants
  • v0.322.0See the whole character behind one strokeせおうしたじSeou Shitaji2026-09-02

    Studying one stroke drew that stroke and the ones before it and nothing else, so a first stroke was a single mark in an empty box with no sense of where in the character it belonged. The animation already draws the finished character faintly underneath and deliberately drops it the moment a stroke is picked, because an outline of everything is also what makes not-drawn-yet look drawn - so this is a mode rather than a change of default. Outline sits beside Replay and Numbers, appears only while a stroke is picked since the full drawing already has its outline, is off unless asked for, and is remembered per device. Requested 2026-09-02 by John.

    Area
    study
    Name
    せおうしたじ · 背負う下地 Seou Shitaji · the faint ground a stroke is laid on
  • v0.321.0Print is never themedすみぞめSumizome2026-09-02

    Dark mode followed the page onto paper: --foreground is near-white there, so a member reading in dark mode printed almost nothing onto white paper, having first spent the ink laying a navy wash across it. Two failures, and the second hid the first - the tokens are one override, the wash is four gradients on body that the dark theme replaces on its own selector, which a bare html,body cannot outrank. The print rules move to src/app/print.css and force a monochrome palette with !important, since an @import at the top of globals.css loses every tie on source order. Filled brand pills print as outlines rather than solid black rectangles. Found 2026-09-02 by John.

    Area
    platform
    Name
    すみぞめ · 墨染め Sumizome · in ink alone, whatever the screen was
  • v0.320.0Step through strokes with previous and nextしめすいっぽShimesu Ippo2026-09-02

    The stroke picker offered the numbers and nothing else, so following a character stroke by stroke meant aiming at a different target for every step - and a twenty-nine stroke character wraps its numbers into a block to search through. Previous and next sit together in front of the numbers, so one repeated press walks the whole character from a control that does not move; they were tried at either end of the numbers first, which put them half a panel apart as soon as the row wrapped. The ends join up rather than going dead, because somebody who has just reached the last stroke wants to watch it built again and a stopped button sends them back to hunt for 1. The opener and the numbers also share one row now instead of stacking. Requested 2026-09-02 by John.

    Area
    study
    Name
    しめすいっぽ · 示す一歩 Shimesu Ippo · one step, then the next
  • v0.319.0Backfill missing catalogue subjectsさいごのあなSaigo no Ana2026-09-02

    64 subjects in the study queue are absent from the local catalogue and still fall through to the API.

    Area
    platform
    Name
    さいごのあな · 最後の穴 Saigo no Ana · the last hole in the shelf, filled
  • v0.318.0The radicals a kanji is built fromこまかいぶひんKomakai Buhin2026-09-02

    A kanji page said how the character is drawn and what it means but not what it is made of, while the RADKFILE index behind the radical search already knew the parts of 6,355 characters. Written with sits under the stroke box: each part as it is written, its English name where the dictionary has one, and a link into the radical search for everything else built from it - which is the question a reader has next. Its own block with its own credit, because the data is EDRDG's rather than WaniKani's and every block on this page names its source. The index is stored radical-first, since that is the direction a search runs, so the page's question is answered by testing 253 memberships rather than by keeping a second copy the other way round. Reachable on its own at /kanji/<character>/parts, and absent for a character RADKFILE does not cover. Requested 2026-09-02 by John.

    Area
    study
    Name
    こまかいぶひん · 細かい部品 Komakai Buhin · the small parts a character is made of
  • v0.317.0Mark a list studied, and grade itけいかのけじめKeika no Kejime2026-09-02

    A list can be marked complete or studied by its owner, and carries a grade the system assigns after a study or review pass over it - how much of the list is known, and how well it went. Shown on the card and the list's page. Ties to practising from a list and the who-knows-what overlay. Requested 2026-09-01 by John.

    Area
    study
    Name
    けいかのけじめ · 経過のけじめ Keika no Kejime · how it is going, and the line drawn under it
  • v0.316.0The look you chose follows you off the profile pageくらいままKurai Mama2026-09-02

    data-theme and data-jp-font were hardcoded to light and sans on the root element and changed only in the browser, by a control mounted on the profile page alone. So a member who chose Dark got dark on their profile and light on every other page: the choice did not survive a navigation. The stored value was never read back either - the comment in the control referred to a theme script that sets the attributes before paint, and no such script existed. Both preferences now live in the cookie the layout reads, so the server draws the chosen look in the first paint of every page, the same treatment the grade explorer got in 0.300.0. localStorage is gone from the control rather than kept beside the cookie: two stores that can disagree is how study mode ended up unable to turn itself off.

    Area
    platform
    Name
    くらいまま · 暗いまま Kurai Mama · dark stays dark, page after page
  • v0.315.0The viewer asks about subject -1きかないかりばんKikanai Kariban2026-09-02

    Surfaces that show items WaniKani never taught number their rows -1, -2, -3 down the page, so React has a key and a selection has something to hold. The review stats card passed that straight to /api/study/<id>/subjects/<subjectId>/history, which answered 400 twice on every open of a home-made list item - reproduced on a list of three such items before the fix and gone after it. The card now draws nothing for a row with no subject behind it, because there is no review history to show. The rule the filer already kept is one shared predicate, isCatalogSubjectId, rather than a > 0 test written wherever somebody remembered: the same mistake stopped filing from saving at all, because a single stand-in made the list route reject the whole PATCH.

    Area
    study
    Name
    きかないかりばん · 聞かない仮番 Kikanai Kariban · the stand-in it stops asking about
  • v0.314.0Study mode cannot be turned offかえせるきりかえKaeseru Kirikae2026-09-02

    Study mode could not be turned off by any means. The hook returned true from its initialiser and ignored what the page had resolved from the address; it answered studyMode=off and studyMode=0 with setStudyMode(true), so the off switch turned it on; it read a stored value of any kind, including the '0' it wrote itself, as on; and it rewrote the address to studyMode=on whatever the member chose. The menu had no way out either - all four entries pick a review behaviour and every one of them turns study mode on - while the button beside it had always drawn an off state nobody could reach. So every surface gated on it stayed hidden: the JLPT explorer showed an ellipsis where meanings and readings go, and never showed a kanji's compounds at all. The decision is now one pure function, resolveStudyMode, with the address beating the browser's memory beating what it already was, and the menu offers Off above the four behaviours.

    Area
    study
    Name
    かえせるきりかえ · 返せる切り替え Kaeseru Kirikae · a switch that goes back
  • v0.313.0See who knows what across a shared listおたがいのおぼえOtagai no Oboe2026-09-02

    On a shared list, each member's standing on every item - not started, learning, known - as a small overlay, so a family can see who has the week's kanji down and who needs a hand. Uses each member's existing visibility setting. Suggested 2026-09-01.

    Area
    study
    Name
    おたがいのおぼえ · お互いの覚え Otagai no Oboe · what each other has learned
  • v0.312.0Kanji review stats ask under the wrong idえるあてさきEru Atesaki2026-09-02

    The JLPT explorer asked for a kanji's review history under whatever the address bar held: the first segment after /users/ is the member's nickname or slug, never their account id, so every request went to /api/study/<nickname>/... and answered 404. Show review stats could never fill in, and opening any kanji logged a failed request. The account id was already a prop the component used for its other fetches, one line away from the guess. The two per-kanji lookups - this history and the compounds - now live together in useSelectedKanjiDetails, each result stored beside the kanji it belongs to, so arrowing down the list cannot show the previous kanji's history under the new kanji's glyph.

    Area
    study
    Name
    えるあてさき · 得る宛先 Eru Atesaki · the address it actually reaches
  • v0.311.0The JLPT explorer paints before it waitsうけとるぶんだけUketoru Bun Dake2026-09-02

    The JLPT explorer's page was 13.1MB, and 9.8MB of it was word examples: every one of the 2,211 kanji carried its own compounds so that whichever one the member clicked could show them. They are read one kanji at a time, so they are fetched one kanji at a time, from a new /api/jlpt/[kanji]/words - and the panel says it is looking rather than showing an empty list while it waits. The other half was the member's own SRS state, fetched from WaniKani on every render for about 650ms before a single kanji was drawn. Account.assignmentCache already holds the whole assignments collection, refreshed by the ordinary five-minute sync, and the games and study tags already read it; getUserKanjiIndexFromCache reads the same rows without the call. Measured: 13.1MB to 1.9MB, and 1,185ms to 445ms, with the JLPT query itself falling from 381ms to 27ms. Live WaniKani assignments stay where they are needed, in the queue paths that are about to review the items.

    Area
    jlpt
    Name
    うけとるぶんだけ · 受け取る分だけ Uketoru Bun Dake · only the part you take
  • v0.310.0Add to lists from the glyph viewerいれるいばしょIreru Ibasho2026-09-02

    The viewer is where a reader decides a character is worth keeping - they have opened it, read the meaning, seen the words it appears in - and it was the one surface that could not act on that. The saved lists now sit under its title as a rail that scrolls, with the lists the character is already on first, so the strip costs the same space whether somebody keeps two lists or forty. Trouble and favourite stay inside the glyph, where they already were. The explorer grids are add-to-lists-explorers.

    Area
    study
    Name
    いれるいばしょ · 入れる居場所 Ireru Ibasho · the place to put it, from where you found it
  • v0.309.0The same doors on radicals and wordsあけるあいかぎAkeru Aikagi2026-09-02

    The kanji page gained an address for each of its parts; the radical and word pages, which are built from the same blocks, kept answering only as a whole. Both now take the same section segment - /radicals/leaf/related, /vocabulary/水泡/examples - from one shared registry and one shared address module, so the three public subject pages cannot drift into three different answers to the same question. A section a subject has nothing under is a 404, and every section page names the subject's own page as canonical. Requested 2026-09-02 by John.

    Area
    study
    Name
    あけるあいかぎ · 開ける合鍵 Akeru Aikagi · one spare key, and it opens all three
  • v0.308.0The board says what is happening, and takes a wishわたすたのみWatasu Tanomi2026-09-02

    The release board now says what is happening rather than only what is planned. In progress is its own tab, derived from the claim the board already records - not a fifth status, because two fields saying the same thing can disagree. Shelved is split into Backlog and Cancelled, which is what it always held. And the board takes a wish: an admin types a request straight into the page, it lands in the FeatureWish table, and `pnpm backlog wishes` shows an agent what is waiting with the command that files it as planned work. The timeline is a committed file the site cannot write to, so the wish list is the database half that makes a request from the website reach the board at all.

    Area
    admin
    Name
    わたすたのみ · 渡す頼み Watasu Tanomi · the request, handed across
  • v0.307.0A page for each part of a characterろうかのいっしつRouka no Isshitsu2026-09-02

    The kanji page shows everything about a character at one address, so there is no way to hand somebody the stroke order and nothing else. Each panel gets a path of its own under the character - /kanji/<character>/stroke shows the stroke order alone, and the other panels follow the same shape - built from one registry so a section is defined once and rendered identically whether it is on the whole page or on its own. An unknown segment is a 404 rather than a silent fall back to the whole page. The same shape then covers radicals and words, and the share control on each panel points at that panel's own address. Requested 2026-09-02 by John.

    Area
    study
    Name
    ろうかのいっしつ · 廊下の一室 Rouka no Isshitsu · one room off the corridor, with a door of its own
  • v0.306.0Every list surface: sortable, pageable, searchable, fastれっきょRekkyo2026-09-02

    Lists, like all data on the site, are sortable, reversible, pageable, scrollable, searchable, cached and fast. The Lists page and the list viewer get search, sort by name, size and last change, and paging once a list outgrows a screen; the same standard applies to every surface that lists data. Stated 2026-09-01 by John as a standing rule.

    Area
    study
    Name
    れっきょ · 列挙 Rekkyo · listing things out, one page at a time
  • v0.305.0The Print link is built in one placeるいじのるいすいRuiji no Ruisui2026-09-02

    The list page appended the print flag to a worksheet address by hand, which broke the moment a shared list's address started carrying its key: the two queries ran together and Print 404ed on exactly the lists worth sharing. The card had the inverse hack - stripping a trailing flag to derive the worksheet link - so when the prop stopped carrying one, both its pills became the same link and Print silently stopped printing. listPrintHref and printNowHref are the only things that spell it now, with a test that fails if anything else does. Found 2026-09-02.

    Area
    study
    Name
    るいじのるいすい · 類似の類推 Ruiji no Ruisui · inferring one link from another because they look alike
  • v0.304.0One stroke at a timeりんしょのいっかくRinsho no Ikkaku2026-09-02

    The stroke order panel plays the whole character and nothing else: there is no way to hold a single stroke still and look at it, which is what somebody copying the character actually needs. A row of numbers opens under the header - closed by default, so the panel stays as quiet as it is now - and picking a number draws that stroke alone: the strokes before it in grey, the strokes after it blank, the chosen one in colour and animated so the pen direction is visible. Requested 2026-09-02 by John.

    Area
    study
    Name
    りんしょのいっかく · 臨書の一画 Rinsho no Ikkaku · one stroke of the model you are copying
  • v0.303.0Practise from any list you can seeらいほうRaihou2026-09-02

    A worksheet from a list you do not own. The sheet is built at your own address, so a list belonging to somebody else is named in the path - /practice/list/mika/week-1 - rather than looked up on your own shelf, where the same name means a different list. Reachability is the list's own: public to anyone, unlisted to whoever holds the key, private to nobody. Games from a shared list are list-game-from-shared.

    Area
    study
    Name
    らいほう · 来訪 Raihou · a visit, calling on somebody else
  • v0.302.0One grid, three pages, one lookよそおうひとくみYosoou Hitokumi2026-09-02

    Strokes, Grades and the WaniKani library each draw their own card grid, and side by side they read as three different products: different card shape, different chrome, different placement of level and status. There is already a shared pair for lists of subjects (SubjectCards and SubjectRows) and a UnifiedExplorerCard, but these three do not all go through them. Put the general look in one component and let each page pass what is genuinely its own - a stroke count, a JLPT pill, an SRS stage - rather than restating the whole card.

    Area
    study
    Name
    よそおうひとくみ · 装う一組 Yosoou Hitokumi · one set, dressed alike
  • v0.301.0Lists gets a second row of its ownゆるがないひょうめんYuruganai Hyoumen2026-09-02

    Lists is a top-level section with a single child, so the header suppresses its second row and everything the page holds is stacked into the body instead. It has the same shape as Learn - several distinct collections a member moves between - so it should name them in the second row. The names should follow from what the collections actually are rather than being invented; work them out from the list kinds the code already distinguishes.

    Area
    platform
    Name
    ゆるがないひょうめん · 揺るがない表面 Yuruganai Hyoumen · a surface that does not shift
  • v0.300.0The grades page stops flashing on arrivalやむちらつきYamu Chiratsuki2026-09-02

    GradeKanjiBoard seeds two pieces of state from localStorage inside the useState initializer, so the server renders the default and the browser flips it after hydration. The reveal mode is the visible one: every reading paints and then hides. Strokes shares the view-mode half of the pattern and does not flash, which points at the reveal mode as the cause. No page under Learn should flash.

    Area
    study
    Name
    やむちらつき · 止むちらつき Yamu Chiratsuki · the flicker that stops
  • v0.299.0Pull updates into a copied listもちかえるついかMochikaeru Tsuika2026-09-02

    A copy is a snapshot, and the person it was taken from keeps adding to theirs. The two ways forward were both wrong: follow the original and you no longer own what you are looking at, copy it again and you lose everything you changed. A copy remembers its source, so it can simply ask - and the answer sits at the top of the copy's own page: what has been added since, as characters rather than a count. Item by item, which is the point: somebody who copied a class list and dropped half of it does not want the half back, so every item is a button that takes only itself, with Take all there for the common case of agreeing with everything. Taken items are appended in the copy's own order rather than merged into the source's, because the member arranged their list; anything already held is left exactly as it is, notes included. Removals are never carried across - a friend tidying their list is not grounds for deleting from somebody else's. A source that has gone private since answers as unreachable rather than as empty, because "nothing new" and "you can no longer see this" are different things to a member deciding whether to keep a copy. The panel draws nothing at all when there is nothing new, which is almost always: a list that says "0 new" every time it is opened is a list that has learned to be ignored. Suggested 2026-09-01.

    Area
    study
    Name
    もちかえるついか · 持ち帰る追加 Mochikaeru Tsuika · the additions you take home from the original
  • v0.298.0The JLPT counts ask WaniKani for characters it already holdsめくらないめかたMekuranai Mekata2026-09-02

    The JLPT counts on the leaderboard need one static fact about each learned kanji - the character - and they were asking WaniKani for it in 200-id chunks. A member with fifteen hundred learned kanji cost eight sequential round trips on every stats computation, for data the local catalogue holds: production carries 2,102 kanji, which is every one WaniKani teaches. The catalogue answers now, in one query, and the API is kept only for ids it has never seen, so a subject added since the last sync is still counted rather than dropped. Assignments stay live, being the member's own state. The same shape the study queue and the kanji index already follow. Found 2026-09-02 while sweeping for per-render subject fetches.

    Area
    platform
    Name
    めくらないめかた · めくらない目方 Mekuranai Mekata · weighed without turning a page
  • v0.297.0A reference sheet, to read rather than write onむすぶしおりMusubu Shiori2026-09-02

    Printing a list gave you squares to trace and nothing else. That is half of what somebody printing a list wants: the other half is the list itself - the characters with their meanings and readings - to keep beside the desk or hand to somebody. Reference is a third sheet beside Trace and Stroke order, at the same address with a mode, so a chosen sheet is still a link. It is a table rather than a grid, its readings are on by default because they are the point of it, it credits KANJIDIC2 rather than the stroke art it does not draw, and it does not tell a phone to find a bigger screen - reading is the one thing a phone does well. The columns collapse to one at 393px instead of setting each reading a character per line. The tracing half of this shipped as 0.291.0; this is the rest of it.

    Area
    study
    Name
    むすぶしおり · 結ぶ栞 Musubu Shiori · the list, tied to what it means
  • v0.296.0The second row survives a click into a pageみとりずのまちかどMitorizu no Machikado2026-09-02

    A group's second row is how a member knows where they are, and it disappeared one click in. Absolute nav entries matched the address by exact equality, so /maps and /strokes found the Learn group and /maps/japan/gifu found nothing at all - opening a prefecture, or any stroke count, took the whole row off the page. Member-scoped pages never had it, because they match on their first path segment, which is why /grades/1 keeps its row. An absolute entry matches by prefix now, on a path boundary rather than on letters, so /mapsomething is still not a page in Maps.

    Area
    platform
    Name
    みとりずのまちかど · 見取り図の街角 Mitorizu no Machikado · a street corner with a map on it
  • v0.295.0The JLPT explorer opens when you click itまたせるおわりMataseru Owari2026-09-02

    Clicking JLPT Explorer looks like nothing happened: it takes about six seconds to arrive where Grades and Strokes take a tenth of a second, measured from the same page on the same server. JlptExplorerContent is a client component that imports src/data/jlptReadings.json, so 397KB of readings is shipped to the browser and parsed before the page can appear. The readings belong on the server, or behind the same catalogue lookup every other surface uses.

    Area
    jlpt
    Name
    またせるおわり · 待たせる終わり Mataseru Owari · the end of being kept waiting
  • v0.294.0The school grades search has no autocompleteほしいめいぼHoshii Meibo2026-09-02

    The grades search asked a learner to already know the character they came to look up: every other search here suggests what its surface holds, and this one suggested nothing. It offers the grade's own kanji with their meanings now, as a plain suggestion list on the box that was already there. All of them, in the order the grade teaches them - the search reads the whole grade, so a partial list would be a half-truth about what typing will find, and junior high's 1,110 characters are exactly the grade where knowing what is in there is worth the most. Reported 2026-09-02 by John.

    Area
    study
    Name
    ほしいめいぼ · 欲しい名簿 Hoshii Meibo · the list you wanted to see
  • v0.293.0A thousands comma is not a full stopへんなてんHen na Ten2026-09-02

    Searching 5,000 offered the kanji for five and for zero, so a price put at the top of the results. The reader matched runs of digits, and a thousands comma broke 5,000 into 5 and 000 - each read as its own number. The money parser had always dropped that comma before reading an amount; the same rule is here now and the two agree about what a number is. A comma between other digits is somebody listing two numbers and is left alone, since joining those would invent a third. The other half is why the query looked broken even spelled correctly: 五千 is the right answer to 5000 and no catalogue holds it - the spelling of a compound number is not a subject anywhere - so searching it exactly found nothing at all. The characters it is written with are offered alongside the spelling, and they are all taught: 5000 answers with and , and 24 with , and . A number written with a single character still answers with that one character only. Reported 2026-09-02 by John.

    Area
    study
    Name
    へんなてん · 変な点 Hen na Ten · the dot that was reading as a break
  • v0.292.0Two sections stand asideふたつひかえるFutatsu Hikaeru2026-09-02

    The header carried seven sections and wrapped to two lines on a laptop, which is what made every narrow page look broken. Two of them did not earn the room: the leaderboard is the site's own front page and undeveloped besides, and Progress is history and statistics - things a member looks up occasionally rather than navigates by. Both moved into the account menu, where History and Statistics now sit beside Profile and WaniKani, which is where the rest of "about my account" already lived. The row is Study, Game, Learn, Lists and Read, and it fits on one line. The menu learned a distinction while that was open: a page rooted at the site rather than at the member is listed with Updates rather than among your own pages, because the leaderboard is everybody's and listing it under Profile would be a link to somebody else's. Requested 2026-09-02 by John.

    Area
    platform
    Name
    ふたつひかえる · 二つ控える Futatsu Hikaeru · the two sections that stand aside
  • v0.291.0Print a worksheet from a list, and from the list's pageひとふではんしHitofude Hanshi2026-09-02

    A list could be turned into a writing sheet only from its card on the shelf, and only as a picked sheet carrying every one of its characters in the query string - which broke on a long list, went stale the moment the list changed, and could not be sent to anybody as a link to “my Week 1 sheet”. The page you actually read a list on offered nothing at all. A saved list is a practice source of its own now, addressed by name at /practice/list/week-1, and the sheet is titled with the list's name so a printout says which list it is. Both surfaces - the card and the list's own page - offer Worksheet and Print, the second opening the print dialog on arrival; Burned offers neither, since tracing what you already know is not practice. The list page's search box takes a line of its own on a phone, where five controls beside it had squeezed it down to four characters. Requested 2026-09-02 by John.

    Area
    study
    Name
    ひとふではんし · 一筆半紙 Hitofude Hanshi · a single brushstroke on writing paper
  • v0.290.0The numbers hold their size, and Escape closesはなれるあいだHanareru Aida2026-09-02

    Two reported together. Escape emptied the search box and then did nothing: the panel left open after the clear is the recent items rather than the suggestions, and only the suggestions were in the condition, so the second press had nothing to act on. Both count now - clear, then close. And the stroke-order sizes were growing the wrong thing. The numbers are drawn inside the character's own coordinates, so asking for a bigger drawing made every number bigger by the same amount and they collided exactly as before, which is the opposite of what enlarging it was for. They are sized against the drawn width instead, so they come out the same height on screen at every setting and the extra room goes where it was wanted - between them. The largest size grew from 320 to 370 pixels and drops the four printed faces beside the drawing: somebody who has asked for the character as big as it goes is looking at the strokes, and four printed copies of it are what that width was being spent on. Reported 2026-09-02 by John.

    Area
    study
    Name
    はなれるあいだ · 離れる間 Hanareru Aida · the space that opens between the numbers
  • v0.289.0The controls wait for the pointerのぞくぼたんNozoku Botan2026-09-02

    Every card in a list carried "Add a note" printed under it in plain text and an × sitting on it, so a grid of characters read as a grid of controls and the thing the page exists to show came third. Both wait for the pointer now: they appear on the card under the cursor and on whatever has keyboard focus, and a note that has been written stays visible always, because that is content rather than a control. The × was drawn with the letter x, which read as part of the card; it is a proper mark in a circle that turns red where it will act. Reported 2026-09-02 by John.

    Area
    study
    Name
    のぞくぼたん · 覗くボタン Nozoku Botan · the button that waits until you look
  • v0.288.0Size, centring and the buttons in the stroke boxねばりのばんごうNebari no Bangou2026-09-02

    The stroke animation is drawn at one fixed size, and at that size the stroke numbers are too small to read - the whole point of turning them on. It takes a small S/M/L control, remembered per device. Three things beside it are out of true: the drawing is not centred in its row because the printed faces on one side and the buttons on the other are different widths, the Replay and Numbers labels sit left in buttons stretched to a common width, and the dictionary fact pills do not centre their text. Reported 2026-09-02 by John with screenshots.

    Area
    study
    Name
    ねばりのばんごう · 粘りの番号 Nebari no Bangou · the numbers you can finally stay with
  • v0.287.0One row of options, and the row to itselfぬけてひろがるNukete Hirogaru2026-09-02

    Four things about the search row, reported together. Find by radicals and Add to lists were two rows of options stacked above the results; they are one row now, and the radical picker takes that row over while it is running rather than opening a second one - everything that changes how the search behaves is in the same place. The dropdown is as wide as the field it hangs from, since a fixed width left it narrower than the open box, which looked like a second control and wrapped the options onto two lines. Opening the header's box made the section links wrap to a second line while squeezing the field; the links now step aside entirely and the box takes the whole row, because somebody who has started typing is not reaching for Learn and the links are one Escape away. Escape empties the box before it closes it - one key, two things to undo, and closing first left the box still full so the next focus reopened the search somebody was trying to leave. And the radical grid can be resized: smaller, larger and reset, remembered per browser, starting larger than it shipped at. A grid of 253 characters is read by shape - and differ by one stroke - so how big it is drawn decides whether it can be read at all, and that answer is different on a phone, at a desk and for older eyes. Reported 2026-09-02 by John.

    Area
    study
    Name
    ぬけてひろがる · 抜けて広がる Nukete Hirogaru · the links step out and the box widens
  • v0.286.0Name a radical in EnglishにほんごいがいNihongo Igai2026-09-02

    The radical command could only be written in Japanese, which left the typed half of the feature useless to exactly the reader it was built for: somebody looking up a character they cannot read is usually in the same position with its parts - they can see the shape and have no way to type it. :radicals sun + moon now answers with the same thirty-one characters as + . Names come from two sources, best first, because neither covers the set alone: the kanji dictionary for the 247 of 253 radicals that are also kanji, which is the accurate answer and costs nothing since the file is already shipped; and WaniKani's own radical names for the 199 whose character is in this set, because a member taught "fins" for will type what they were taught. WaniKani's are teaching mnemonics rather than classical names - it calls a raptor cage - so they answer second and never over the dictionary. A name that reaches neither answers with nothing rather than a neighbour: WaniKani draws some of its radicals instead of writing them, so "beggar" names a picture and no character here. The command's own reading changed with it. A space is inside "long time" and between and , so it is no longer a separator: parts split on a plus or a comma, and then a part of Japanese script becomes one radical per character while a part of Latin letters stays one name however many words it holds. Requested 2026-09-02 by John.

    Area
    study
    Name
    にほんごいがい · 日本語以外 Nihongo Igai · a radical named in English too
  • v0.285.0A glyph for every WaniKani radicalなぞるかたちNazoru Katachi2026-09-02

    Fifteen of WaniKani's 504 radicals arrive with no character, so every surface fell through to the slug and a review of asked the member to recognise the English word "tofu". WaniKani draws those as artwork on a gated CDN that is its copyright either way. Nine turn out to be ordinary Unicode characters WaniKani never filled in, found by subtracting a kanji's known components from WaniKani's own decomposition and checking the remainder against two independent databases; the other six are shapes Unicode does not encode at all and take private-use codepoints. All fifteen are carved out of Noto Sans JP rather than drawn - Hills is without its top stroke, Cactus the bottom of - so they match the site's own Japanese face because they are that face. The font ships at two weights and is scoped by unicode-range, so it is consulted for those fifteen codepoints and never disturbs the gothic, mincho, textbook or brush switch.

    Area
    study
    Name
    なぞるかたち · なぞる形 Nazoru Katachi · a shape traced for every radical
  • v0.284.0One search box, and room to type in itとういつのおおきさTouitsu no Ookisa2026-09-02

    The header's search was three sizes smaller than the results page's, which made one control read as two different ones - and it had grown a command language that needs room. Both boxes are the same height and the same type now, the header's collapses narrower than before when nothing is in it, and it opens far wider when it is being used, wider again while a command is in it. On a narrow desktop the section links step aside while the box is open, since somebody who has started typing is not reaching for Learn. And on the search page the header's box is gone entirely - it was a second field asking the same question a hand's width above the first - with Search named in the row instead, where the section a member is looking at belongs. Reported 2026-09-02 by John.

    Area
    study
    Name
    とういつのおおきさ · 統一の大きさ Touitsu no Ookisa · one size for both search boxes
  • v0.283.0Add to lists from a subject pageてもとてちょうTemoto Techou2026-09-02

    A member could file a kanji from a search row but not from the kanji's own page, which is where you decide a character is worth keeping. The public kanji, word and radical pages carry a strip under the card with the same marks the search column uses - trouble, favourite, and a chip for each saved list - and a visitor gets the offer to join instead. Part of add-to-lists-everywhere, which keeps the glyph viewer and the explorers. Reported 2026-09-02 by John with screenshots.

    Area
    study
    Name
    てもとてちょう · 手元手帳 Temoto Techou · the notebook kept at hand
  • v0.282.0The radical picker: a way in, and fewer rowsつめてならぶTsumete Narabu2026-09-02

    Three things reported on the radical command. The grid gave every stroke count a row of its own, which wasted almost all of the width on the counts that hold three radicals - fourteen strokes is and - and made the picker twice as tall as it needed to be, which is the space the answers wanted. The radicals now flow left to right in one run with the stroke count as a marker between groups, the way paper dictionaries print it, and the grid is ten rows rather than fourteen. The command was also the only way in, and nobody guesses :rad, so there is a row under the search box now - Find by Radicals, or type :rad - and the button writes the command rather than opening a panel of its own, so pressing it and typing the words land in the same place. It sits in the layout under the input rather than inside the dropdown, because the results page keeps its dropdown shut on focus so a seeded query cannot cover the results it just produced, which would have left the row permanently invisible there. And a bug: after a radical search, focusing the box again showed nothing until a key was pressed. A command in the box is the picker's own state, so focus now brings both the picker and its answer back. Reported 2026-09-02 by John.

    Area
    study
    Name
    つめてならぶ · 詰めて並ぶ Tsumete Narabu · the grid packed into fewer rows
  • v0.281.0The radical picker is a command in the boxちゅうもんのけんさくChuumon no Kensaku2026-09-02

    The radical lookup shipped as a pill inside the search field that opened a dialog over the page, and the two halves never agreed: the query was in one place and the answer in another, a picked radical left no trace in the box, and nothing about it could be typed, copied or linked. It is a command now. Typing :rad, :radical or :radicals opens the grid under the search bar rather than over the page, picking writes :radicals + into the box, and the matching kanji come back as ordinary search results underneath - with the kind tabs, the keyboard and the filing column every other search already has. The query is the whole state, so it can be typed by hand, pasted to somebody and walked with the back button. The pill is gone from the field and the search bar grows while a command is in it. The reason a dialog had been chosen in the first place turned out to be a bug of its own, and a much older one: the search page's shell was clipped with overflow-hidden, so every dropdown was cut off at the shell's height. A search for "water" found ninety-one results, showed eleven and drew three. Clipping sideways is what that was for, and it now clips sideways only. Reported 2026-09-02 by John with screenshots.

    Area
    study
    Name
    ちゅうもんのけんさく · 注文の検索 Chuumon no Kensaku · the search you type as a command
  • v0.280.0A note on an item in a listたったひとことTatta Hitokoto2026-09-02

    A list of glyphs says what to study and never says why. The mnemonic that finally made one stick, the sentence it was met in, the mistake it keeps causing - those are the reason a member's own list beats a generated one, and they had nowhere to live. Every item on a saved list can now carry a short note, written from the list itself while looking at the thing it is about, and shown to every reader of the list in both densities. The invitation to write one appears only while editing, so a list nobody wants to annotate stays a list of glyphs. One item at a time rather than a save over the whole list, because a whole-list write would race with any other change the member has open. The correctness half is invisible and was the larger part: saving a list deletes every row and writes them again, so a caller that read only the columns it cared about would have wiped the notes on every other item the moment somebody removed one. Every caller that rewrites a list now reads the note first, and a test fails the build if a new one forgets - and while that was open, an item's authorship stopped being reassigned to whoever last touched the list. Suggested 2026-09-01.

    Area
    study
    Name
    たったひとこと · たった一言 Tatta Hitokoto · one line saying why it is here
  • v0.279.0Search kanji by radicalそなえるぶしゅSonaeru Bushu2026-09-02

    The way to look up a character you cannot read: you cannot type it and you do not know its readings, but you can see on the left and on the right. Every search box now carries a Radicals button - the header, the phone sheet and the results page, since they are one field - and it opens the classical grid: 253 radicals in stroke-count order, the ones paper dictionaries index by. Picking narrows on all of them rather than any, so with is the thirty-one characters holding both, commonest first, each one a link to its page. Radicals that appear in none of what is left are dimmed rather than left as routes to an empty list, which is the whole ergonomics of the thing. The answer is pinned above the grid so a pick made at the bottom of it is still answered where you can see it. The radicals are RADKFILE's - Michael Raine's analysis of the JIS kanji, kept by the EDRDG under the same share-alike terms as the dictionary - covering 6,355 characters, rather than WaniKani's teaching radicals, which are named for what they look like and only reach the two thousand kanji it teaches. It is a dialog rather than a dropdown because 253 buttons and their answer do not fit under a field: hung from the header on a phone it ran six hundred pixels past the bottom of a screen that clips. Requested 2026-09-02 by John.

    Area
    study
    Name
    そなえるぶしゅ · 備える部首 Sonaeru Bushu · the radicals a character is made ready from
  • v0.278.0The facts line up where they belongせいれつなおしSeiretsu Naoshi2026-09-02

    The line of facts shipped an hour earlier was drawn as a list, and two of the three surfaces that show it put it inside a paragraph - the list page header and the followed-list card. No browser allows a list inside a paragraph, so the markup the server sent and the markup the browser built disagreed, React gave up matching them and rebuilt the whole tree on hydration. It reads identically and is now spans, which are legal wherever prose is. Found by reading the browser console rather than the page, which is the only place this kind of fault says anything at all.

    Area
    study
    Name
    せいれつなおし · 整列直し Seiretsu Naoshi · the facts line up where they belong
  • v0.277.0What a list says about itselfすぐわかるゆらいSugu Wakaru Yurai2026-09-02

    A list card said one thing about itself - when it last changed - so a reader deciding whether a shared list was worth opening had nothing to go on: not how big it is, not whether anybody else keeps it, not whether it is still being added to. Every list now carries the same facts wherever it is described: when it was made, when it last changed, how many people follow it, and how many times it has been copied and shared. They are drawn by one component, so a list cannot describe itself one way on its card and another on its page - the list page had this vocabulary already and the cards had none of it, and now there is one. A fact that has not happened is left out rather than printed as a zero, because "copied 0 times" is a sentence about failure and a list nobody has copied yet simply does not mention copying. The follower count is new data: the lists query counts subscriptions alongside the rows. Two details that only showed up on screen: the separator trails its fact rather than leading the next one, or a wrapped line starts with a dot nobody meant, and the card no longer prints its size twice. Requested 2026-09-01 by John.

    Area
    study
    Name
    すぐわかるゆらい · すぐ分かる由来 Sugu Wakaru Yurai · where a list came from, at a glance
  • v0.276.0Prices the way Japan writes themしききんのけたShikikin no Keta2026-09-02

    Japan counts in ten-thousands, and every price a learner meets is written that way: rent is 8万円, a salary 400万円, a flat 3,000万円. The search read the digits and dropped the unit, so 400万円 came back as four hundred yen - wrong by four decimal places on exactly the figures somebody moving to Japan needs to understand. , , and are read now, and they stack the way they are written, so 35000万円 is three hundred and fifty million and 53千円 is fifty-three thousand. Units that climb rather than fall are a typo and answer with nothing, because a confident wrong figure is worse than none. The Latin shorthand is the same idea in the reader's own writing - 20k yen, 1.5m yen, $50k - and a magnitude letter is only one where a word does not follow, or the M of 20 MXN would read as a million and leave XN behind as the currency. The size cap moved with it: it was a trillion, which answered Japan's national debt of 1,300兆円 with nothing. A magnitude still needs a currency beside it, so 20k and 5 on their own remain numbers rather than prices. Requested 2026-09-02 by John.

    Area
    study
    Name
    しききんのけた · 敷金の桁 Shikikin no Keta · the deposit read at the right number of zeros
  • v0.275.0The JLPT form is open before anybody asks for itさかのぼるごうかくSakanoboru Goukaku2026-09-02

    The profile drew the form to change a JLPT certificate the moment it loaded - an editor, always open, for something that changes twice a decade - and it held one certificate, so reporting a new pass quietly erased the last one. A member holds as many as they have sat: the ladder is meant to be climbed. Certificates are rows now, listed hardest first with the year each was earned, and the card leads with the hardest and counts the rest - "N3 + 2 more". Adding one asks for the year first, because the year decides which test applies: a 2007 sitting offers Levels 1 to 4 and a 2022 one offers N1 to N5, and level 3 in 2007 is old Level 3 rather than N3, which did not exist until the 2010 restructure. The panel stays shut until it is asked for, taking one out is a control on the certificate itself, and the status - planning to sit, none, rather not say - is only asked of a member holding none, since holding one is the answer. The three answers already given were carried into rows. Who can see you was three bordered blocks for a question asked once; it is three lines. Reported 2026-09-02 by John.

    Area
    account
    Name
    さかのぼるごうかく · 遡る合格 Sakanoboru Goukaku · every pass, going back
  • v0.274.0Every way a price is writtenこのみのかきかたKonomi no Kakikata2026-09-02

    500¥ and 100 CAD converted while 500 yen and C$100 answered with nothing, which is the wrong half: the code is what a bank uses and the sign is a keystroke most keyboards hide, so the words are what a reader actually types. A currency written as a word is read now - yen, euros, pounds, francs, won, rupees, pesos and the rest, singular or plural, since the lookup retries without a trailing s - and so are the letters in front of a dollar sign, which is how a Canadian price is written wherever both dollars are in the room: C$100, US$20, A$50, HK$300, R$50. A word can be two currencies exactly as a sign can, so 100 dollars and 20 bucks answer in Canadian and American together, while a peso falls back to the Mexican one and a krona to the Swedish, each being the one a North American reader is likelier to have met. A number beside an ordinary word is still not a price: chapter 3, level 5 and Heisei 3 name no currency and answer with nothing, which is what leaves the era converter its own query. Reported 2026-09-02 by John.

    Area
    study
    Name
    このみのかきかた · 好みの書き方 Konomi no Kakikata · a price written the way you write it
  • v0.273.0The profile says Not connected and offers no way to connectけっていまえのれべるKettei Mae no Reberu2026-09-02

    A member with no WaniKani had nothing on their profile to connect one with, and a member who had just connected was told they were Level 0. The connection page arrived with its own release and the profile now leads to it - Connect WaniKani when there is none, Replace token when there is - and the card no longer states a level nobody holds: a token whose first sync has not landed reads as Connected, with a line saying the level arrives with the sync. Zero is the number the leaderboard deliberately refuses to rank an account at, so printing it as a standing was the one number the page should never have shown. Reported 2026-09-02 by John.

    Area
    account
    Name
    けっていまえのれべる · 決定前のレベル Kettei Mae no Reberu · the level before it is settled
  • v0.272.0Converted answers in the search dropdownくわえるいちぎょうKuwaeru Ichigyou2026-09-02

    Typing "Heisei 3" into the header box answered with ten rows about the number three and nothing else. The era and money answers had been built and shown only on the full results page, while the dropdown under the box - which is where a query is actually typed - called an endpoint that never asked for them. The answer now rides back with the rows rather than taking a request of its own, since it answers the same query, and sits at the top of the dropdown on the desktop and in the phone sheet alike: the value, the Japanese form, and the question it answers. It shows even when no catalogue matched, because "Taisho 5" is 1916 and no row exists for it - a dropdown that said no results to a question it had just answered would be hiding the answer behind its own emptiness. No rate history there and no attribution line: those are a table and a sentence, and the dropdown is ten rows under a search box, so it asks for today's rate only and one cached request does not become six on a keystroke. Reported 2026-09-02 by John.

    Area
    study
    Name
    くわえるいちぎょう · 加える一行 Kuwaeru Ichigyou · one line added above the rows
  • v0.271.0A dollar sign is money tooきまるどるKimaru Doru2026-09-02

    23 EUR and 100 USD converted while $14.40 CAD and $20 matched nothing at all, so the one form the feature was asked for was the one it missed. The dollar sign now names the dollar family: a code beside it picks from that family, so $14.40 CAD is Canadian and $1,234 AUD is Australian; a code outside it contradicts the sign and names nothing, so $1,500 JPY answers with nothing rather than guessing past the contradiction; and on its own the sign falls back to the two currencies this site is written for and answers in both, which is the same choice a yen amount already makes coming the other way. Reported 2026-09-02 by John.

    Area
    study
    Name
    きまるどる · 決まるドル Kimaru Doru · which dollar you meant, settled
  • v0.270.0An Internal kind of member, for ReadかぞくのかこいKazoku no Kakoi2026-09-02

    The reading challenge is one family's arrangement about pocket money, and it was on the public leaderboard with a button inviting anybody to log today's check-in. A member is one of three kinds now - admin, internal, everyone else - and the Read page, its nav tab, its banner on the leaderboard and the check-in route behind it are offered to the first two only. The Read group keeps its news reader for everybody, under the name News, so nobody loses a page. Admins grant the kind from the row menu in the users table; the members already here a month with WaniKani were marked internal in one pass. Requested 2026-09-02 by John.

    Area
    account
    Name
    かぞくのかこい · 家族の囲い Kazoku no Kakoi · the family's own circle
  • v0.269.0A member without WaniKani never meets itおしつけないあんないOshitsukenai Annai2026-09-02

    An account has not needed WaniKani since 0.95.0, but the site was built when it did, and the assumption survived in the places nobody thought of as WaniKani features. A member without a connection was offered the Library Explorer and Stats by their own header and met sixty empty levels and a wall of zeros that congratulated them on passing a level gate they had reached by never starting; Study answered This account has no WaniKani connection in red above a full filter panel over an empty list. One list in src/lib/memberCapabilities.ts now says what the site can do and which four things read WaniKani's own data - the queue, the Library Explorer, the progress figures and a leaderboard standing - and the navigation, the pages and the connection page all ask it rather than each deciding for themselves. The two WaniKani-only pages say what they would have been, why they cannot be it yet and where to connect, instead of rendering nothing convincingly. Study is the one that is not only WaniKani's: an uploaded library has its own items and its own schedule in this app's tables, so a member with one opens on that source rather than on a WaniKani queue that can only answer 409, and a member with neither is told what they need rather than what failed. Requested 2026-09-02 by John with screenshots.

    Area
    platform
    Name
    おしつけないあんない · 押し付けない案内 Oshitsukenai Annai · nothing offered that you cannot open
  • v0.268.0What money was worth years agoえんのにじゅうねんEn no Nijuunen2026-09-02

    A converted amount answers "how much is this", and the number on its own is flat. The interesting thing about 1500 is that it was CA$19.21 ten years ago and is CA$13.01 now - the yen has moved a long way inside one learner's study career, and the price was carrying that history the whole time without saying so. An amount now shows what it was worth 180 days, one, five, ten and twenty years back, in the same currencies the answer is given in, with the change from then to now beside each. Every point is an average of the thirty days of published rates before it rather than a single day's rate: a currency can move a percent on a Tuesday for reasons that have nothing to do with the decade, and quoting that Tuesday as "five years ago" would put a wobble into a line meant to show a trend. The table says as much under itself, because an average and a spot rate are different claims and a percentage with no direction stated is a coin toss for the reader. The six requests run together rather than in turn, and each past window is held for a day - a window that has already closed will never say anything different, and only its ends move. Any of the five may fail and take only its own row with it; four rows of history is still four rows of history, and none at all is no table rather than an empty one. A point that would reach past January 1999, where the European Central Bank's rates begin, is not asked for. Requested 2026-09-02 by John.

    Area
    platform
    Name
    えんのにじゅうねん · 円の二十年 En no Nijuunen · twenty years of the yen, on one line
  • v0.267.0Connect your WaniKani accountうまくつながるUmaku Tsunagaru2026-09-02

    The welcome wizard asks for a WaniKani token once, in a step built to be skipped, and tells anyone who skips it that they can connect later from their profile. That sentence was a promise with nowhere to land: the profile said WaniKani, Not connected, and stopped there, so a member who said Later had no way back short of making a new account. There is a page now, at /users/<member>/wanikani, listed under Settings beside Profile and Libraries and linked from the fact on the profile that used to be a dead end. It leads with what connecting adds and with what a member keeps either way, because the question someone without WaniKani actually has is whether it is worth getting one, and the honest answer is that most of UmaKuma never asks. Then the walkthrough: where WaniKani keeps its tokens, which two permissions the token needs - assignments:start and reviews:create, without which lessons and reviews done here never reach WaniKani - and the field itself, checked against the API before it is stored so the member sees the account it resolved to. A connected member gets the same page as a statement of their connection, with the field closed behind Replace token, since nothing here can read the stored one back. The request the wizard and the page share now lives in one place rather than two.

    Area
    account
    Name
    うまくつながる · うまく繋がる Umaku Tsunagaru · your own reviews, brought across
  • v0.266.0Convert money in searchいまのそうばIma no Souba2026-09-02

    A learner reading a Japanese page meets prices constantly - a 1,500 lunch, an 8,800 textbook - and has no sense of whether that is cheap. Typing the amount answers it now. Any currency the European Central Bank publishes goes into yen, and a yen amount comes back in Canadian and American dollars together, because a yen amount names no second currency and the site is written for both countries rather than one of them. The amount may be written either way round, with the code or with a symbol that means one thing and only one - €23, £10.50, ¥1500, 1500, 14.40 CAD, EUR 23 - with a thousands comma or without, and in full-width digits, which is what a Japanese keyboard produces. There is deliberately no bare dollar sign: it names the Canadian dollar and the American one, and guessing would be wrong for half the people who typed it. The rates come from Frankfurter, which republishes the ECB's daily reference rates with no key, no account and no request budget to run down - the thing that rules out most free rate APIs for a search box, where one member typing slowly is several requests. They are fetched at most once every six hours, shared by every reader, and only when a query actually names an amount, so a search for a word waits on nothing and nothing about a query leaves the site. The answer prints the day it is quoting rather than implying the rate is live, because the ECB publishes on working days and a weekend answers with Friday's numbers. If the rates cannot be reached there is no line at all: a stale number shown as today's would be worse than none, and the three catalogues still have something to say. Requested 2026-09-02 by John.

    Area
    platform
    Name
    いまのそうば · 今の相場 Ima no Souba · today's rate, in the search box
  • v0.265.0Convert Japanese era years in searchあんざんいらずAnzan Irazu2026-09-02

    Typing Heisei 3 is a request to be told a number, and no catalogue holds one - the search read the digit instead and answered with thirty rows about three, so the only question on the page with a real answer got everything except it. An answer is a second kind of result now: worked out rather than looked up, and shown above the catalogues because it is what was typed. 1991 sits where a glyph would, with 平成3 beside it and the reading underneath. The five modern eras are covered, back to Meiji in 1868, written in kanji or in Latin letters, with or without the , in whichever romanization of a long vowel somebody learned - Showa, Shouwa and Shōwa are the same era - and 元年 read as the first year it means. A year an era never reached answers with nothing rather than with arithmetic: 昭和 stopped at 64 and 平成 at 31, so Showa 65 is not a late date, it is not a date. The answer sits outside the results deliberately, because Taisho 5 is a date the catalogues hold nothing for and an answer that vanished when the page said nothing matched would be missing exactly when it was wanted. The catalogue rows still run underneath, since 令和 is also a word somebody may want the reading of. Requested 2026-09-02 by John.

    Area
    platform
    Name
    あんざんいらず · 暗算いらず Anzan Irazu · the era year, without the arithmetic
  • v0.264.0Searching an English meaning misses the kanjiわすれないかたほうWasurenai Katahou2026-09-02

    Searching an English meaning offered the word and never the character it names. "Morning" answered with the word , the radical ₙd and eight rows besides, but not the kanji - and not from any of the three catalogues that teach it. The suggestion list keeps one row per glyph, which is right when the same kanji arrives from WaniKani, the JLPT table and the school grades: a ten-row list cannot spend three rows on . But a glyph is not a subject. is a kanji and a word written the same way, so the word claimed the glyph and all three kanji rows behind it were read as copies and dropped; which of the two led was settled by nothing more than 3044 sorting ahead of 695 as text. Every single-character word hid its kanji the same way - , , , . The row is a subject now rather than a spelling: the same kanji from three catalogues is still one row, while a kanji and a word that share a spelling are two, because they are two things with two pages behind them. Reported 2026-09-02 by John.

    Area
    study
    Name
    わすれないかたほう · 忘れない片方 Wasurenai Katahou · a word and its kanji, both kept
  • v0.263.0Browse kanji by stroke countろくせんかぞえRokusen Kazoe2026-09-02

    The site groups kanji by what a learner is doing - the WaniKani level they are on, the year a Japanese child is taught them, the JLPT that will test them - and none of those answer the question somebody has with a pen in their hand: what else is written in this many strokes? The dictionary has known every character's stroke count since the day it was ingested, so /strokes lists all thirty-three counts with how many kanji each holds, and /strokes/12 is those nine hundred and twenty-five characters, commonest first. A Common only filter keeps the two hundred and fifty-seven a newspaper actually uses, which is the difference between a page to study and a page to scroll, and long counts page. The count is a path so it can be linked and reloaded; what is on the page - the filter, the page number - stays in the query. A signed-in member gets the same add-to-lists column search has, so a character met here goes straight onto one of their lists. It sits under Learn beside the maps. Requested 2026-09-01 by John.

    Area
    study
    Name
    ろくせんかぞえ · 六線数え Rokusen Kazoe · counted by the strokes it takes
  • v0.262.0The maps live at addresses that readれんらくみちしるべRenraku Michishirube2026-09-02

    A map was /map?region=21, which says nothing to a reader, a link in a chat or a search engine. A map is a place, so it is addressed as one: /maps, /maps/japan, /maps/japan/gifu, /maps/united-states/california, /maps/canada/ontario. Every part of it can be linked to on its own, choosing a region or a country writes the path, and the back button walks them. A path naming a country or a region that does not exist is a 404 rather than a quiet fall back to Japan. The old address is gone rather than redirected - a site with two addresses for one page has to explain which is the real one - which is the pattern the rest of the site's addresses will follow. Requested 2026-09-02 by John.

    Area
    platform
    Name
    れんらくみちしるべ · 連絡道標 Renraku Michishirube · an address you can hand to somebody
  • v0.261.0Map insets collide with the mainlandるーぷでかこむRuupu de Kakomu2026-09-02

    A projection puts Okinawa where it really is, which on a map framed to the mainland is on top of Kagoshima, so the two read as one place; and it puts Alaska and Hawaii in the Pacific off California, Alaska hard against the left edge and drawn wider than Texas. Each is now seated in a box of its own, the way every published map of those countries does it: Okinawa in open sea to the south-east, Alaska and Hawaii stacked clear of the left edge in the order a wall map has them. The boxes are chosen against the data rather than by eye, and a test holds them to it - no other region's bounds may reach into one - so a box cannot quietly come to rest on a prefecture again. Zoomed to a single region the map still draws it where it belongs. Reported 2026-09-02 by John with screenshots.

    Area
    platform
    Name
    るーぷでかこむ · ループで囲む Ruupu de Kakomu · the far islands, framed apart
  • v0.260.0The map's region panel cannot be scrolledりかいしやすいRikai shiyasui2026-09-02

    Choosing a region filled a panel taller than the card that held it, and the card clipped the overflow rather than scrolling it, so the emblem and everything under it could not be read at all. The panel is given a real height beside the map and scrolls within itself, and it stays put while the region list scrolls past. Its text was set at one weight throughout, which made a page of facts read as a page of shouting: the labels are quiet, the values are not, each fact's Japanese sits on its own line under the English rather than running on, and the blocks have room between them. The hint above the map is one line now, whatever it says - pointing at a long name used to wrap it and push the map down, moving the whole board under the pointer. Reported 2026-09-02 by John with screenshots.

    Area
    platform
    Name
    りかいしやすい · 理解しやすい Rikai shiyasui · a panel you can actually read
  • v0.259.0Choosing a game does not change the addressらくらくもどれるRakuraku Modoreru2026-09-02

    Choosing a game kept it in the client, so the address never moved: a reload dropped a member back at the hub, the back button left the page entirely, and a game could not be linked to. The game is in the path now - /users/<member>/game/practice - written when a game opens and cleared when the hub returns, so a reload lands where you were, back walks from a game to the hub, and a link opens the game it names. The names in the address are the ones a member reads rather than the ones the database stores, which cannot be renamed; a name that is not a game is a 404 rather than a quiet fall back to the hub. Reported 2026-09-02 by John.

    Area
    games
    Name
    らくらくもどれる · 楽々戻れる Rakuraku Modoreru · the address brings you back
  • v0.258.0Three member pages drew their own headersよそおいをあわせるYosooi wo Awaseru2026-09-02

    Lists, History and Profile each drew a header of their own - History a hand-rolled copy of the shared one, Lists and Profile something else again - so a member moving between their own pages met three different tops. All three take the shared header now, with their pictures and their actions in the slots it provides, from the same place the six dashboard tabs take theirs. Reported 2026-09-02 by John as part of making every page consistent.

    Area
    platform
    Name
    よそおいをあわせる · 装いを合わせる Yosooi wo Awaseru · the same top on every page
  • v0.257.0The Game page wears a different header and sub-navゆるやかなそろいYuruyaka na Soroi2026-09-02

    The Game page looked like another product. Its header was a banner and a heading six times the size of every other page's, so the games themselves began below the fold; its sub-navigation read in title case while every other section's reads in capitals; and nothing in it lit up to say which game was open. It wears the same header card every member page wears, and the row of games is uppercase and lights the one you are in - the hub lights none, a lobby or a run lights its own. The title case was not a style choice but a browser's own stylesheet, which sets text-transform to none on form controls: the row was built from buttons where the others use links, so the rule on the row never reached them. Reported 2026-09-02 by John.

    Area
    games
    Name
    ゆるやかなそろい · 緩やかな揃い Yuruyaka na Soroi · every page in the same clothes
  • v0.256.0One control for the text inside item pillsやさしくよめるYasashiku Yomeru2026-09-02

    The pills that stand for a kanji or a word turn up in several places - the words a kanji is used in, the related groups on a subject page, a paste being turned into a list, a list being edited - and they had drifted: some carried the reading and the meaning, some carried the glyph alone. They are one component now, and every one of them can say what it is: the reading and the meaning under the glyph, with one control that shows or hides that text everywhere at once, remembered per browser and on by default. The paste preview gained the words it was missing, so a chapter comes back as items a member can read rather than a wall of characters to guess at. The pill also decides for itself what is Japanese, so a radical WaniKani draws by name is no longer set in a Japanese face. Requested 2026-09-02 by John.

    Area
    study
    Name
    やさしくよめる · 優しく読める Yasashiku Yomeru · every pill says what it is
  • v0.255.0Logout does not log you outもうでたMou Deta2026-09-02

    Pressing Sign out in the account menu led to a page with Logout and Join as tabs above it and Cancel beside the button, so a member who had asked to leave was still signed in and had no way to tell from looking. The menu signs you out there and then and lands on the home page. It is a button rather than a link, because a link to a page that ends a session would be prefetched on hover and hovering a menu must not sign anybody out. The page itself is still there for anybody who arrives at it directly, without the two tabs, and it says plainly that you are still signed in until you press the button. Reported 2026-09-02 by John.

    Area
    account
    Name
    もうでた · もう出た Mou Deta · already out, not asked twice
  • v0.254.0Explore becomes Learn, Map becomes MapsめだつよびかたMedatsu Yobikata2026-09-02

    The header group called Explore is where a member goes to learn - the two explorers, the school grades, the practice sheets, the maps - so it is called Learn. The maps entry is called Maps, since there are three countries behind it and more to come, and the page names itself the same way. Requested 2026-09-02 by John.

    Area
    platform
    Name
    めだつよびかた · 目立つ呼び方 Medatsu Yobikata · called what it is for
  • v0.253.0The JLPT explorer errors for a member with no WaniKaniむかうさきMukau Saki2026-09-02

    Opening the JLPT explorer as an account with no WaniKani connection answered We could not load this user drilldown. The page asked WaniKani for the member's own kanji with an empty token, took a 401 and threw, so the one page that is a table of every JLPT kanji - the part of the site that needs WaniKani least - was the one page a member without WaniKani could not open. It asks only when there is a connection to ask with, and a token that has since been revoked is treated the same way: the explorer opens, and the member's own progress is simply the part that is not there. Reported 2026-09-02 by John.

    Area
    study
    Name
    むかうさき · 向かう先 Mukau Saki · somewhere to go, with or without a connection
  • v0.252.0One view of a list, not a modal and a pageみっつひとつMittsu Hitotsu2026-09-02

    A list opened as a panel from one control and as a page from another, so which view a member got was a mystery, and the two had drifted apart. There is one view now, and it is the page. Trouble, Favourites and Burned have addresses of their own - /users/<member>/lists/trouble and its two siblings - and every card, name and button leads to a page. The panel is gone, and nothing went with it: the page draws the same subject cards and rows every other surface uses, with the member's own SRS state and tags on them, and it carries choosing and the practice sheet, the glyph viewer, an Edit toggle that takes an item out - untagging a built-in list, dropping a row from a saved one - and the WaniKani offer on Burned. Opening somebody else's list shows how far you have got with what is on it, since the state read is the reader's own. Reported 2026-09-02 by John.

    Area
    study
    Name
    みっつひとつ · 三つ一つ Mittsu Hitotsu · three ways in, one view
  • v0.251.0Every list under Lists, and one search fieldまなぶあつまりManabu Atsumari2026-09-02

    The auto lists sat under Explore as Kanji lists while a member's own lists sat under Lists, on a page that looked nothing like theirs. Every list lives under Lists now: the built-in two, the sets you saved, the lists you follow, the auto lists in full - all of them on one page, in sections, with a star on the auto lists you follow. Explore has lost its Kanji lists entry, and Lists leads a visitor with no page of their own to the auto lists, which are the part of Lists that belongs to everybody. The three list surfaces also shared out one search field, so the viewer, a list's page and an auto list's page all clear with an X and offer the list's own items as you type, rather than one having both and two having neither. They are called Auto lists now, which is what John called them. Requested 2026-09-02 by John with screenshots.

    Area
    study
    Name
    まなぶあつまり · 学ぶ集まり Manabu Atsumari · everything to learn from, gathered in one place
  • v0.250.0Merge listsほんのいっさつHonno Issatsu2026-09-02

    Two or more of your lists made into one, from the Lists page. They are numbered as they are picked, because the order is the answer - merging Week 1 and Week 2 should read as Week 1 then Week 2 - and the panel says how big the result will be and how many items the lists shared before anything is written. Clearing the sources away afterwards is a choice rather than the default, and goes through the same rule the delete button uses, so a source somebody else follows is archived rather than deleted out from under them. Requested 2026-09-02 by John.

    Area
    study
    Name
    ほんのいっさつ · ほんの一冊 Honno Issatsu · several lists, just the one volume
  • v0.249.0Build a list from pasted textへらしてつくるHerashite Tsukuru2026-09-02

    Paste a passage, a handout or a page of a book into the Lists page and every word the catalogue knows and every kanji in the text comes out, words matched longest-first so a run reads as the words it holds rather than a string of characters. What comes out is a preview to massage before anything is written: each item is a button that takes itself out, a whole kind can be dropped at once, and the list is saved only when it is named. Pasted text is treated as hostile - cut to a cap of twenty thousand characters, stripped of control characters, never stored, never rendered as anything but the words in the box, and answered only with items the catalogue already knew, so markup or SQL in a paste comes back as nothing at all. Requested 2026-09-01 by John, restated 2026-09-02 with the safety and massage requirements.

    Area
    study
    Name
    へらしてつくる · 減らして作る Herashite Tsukuru · cut down first, then made
  • v0.248.0Live system listsふえるもくろくFueru Mokuroku2026-09-02

    Seventy-two lists nobody owns, gathered at /lists: every JLPT level N5 to N1, every Japanese school grade and the junior-high set, and every one of WaniKani's sixty levels. They are not snapshots but live - a question stored as a list rather than rows, asked again each time one is opened - so Grade 1 is whatever the grade table says today and a WaniKani level is what it teaches now, radicals then kanji then the words that use them. Each has a public page of its own with the same rows, kind chips, search and burned filter a member's list gets, and the two ways to keep it: follow it and it stays current under Lists that keep themselves on your own page, or copy it and it becomes rows of your own, to cut down to half of Grade 1 or to Grade 1 without what you already know. The index sits under Explore as Kanji lists. Requested 2026-09-01 by John.

    Area
    study
    Name
    ふえるもくろく · 増える目録 Fueru Mokuroku · a catalogue that keeps itself
  • v0.247.0Quiet rows, an edit mode, and romaji in listsひろえるひびきHiroeru Hibiki2026-09-02

    Three things reported together. The search page had become unreadable: every row carried a kind pill, a level pill, a Strokes chip and - because the filing column had been opened once and was remembered for ever - two tag marks and a chip per list. Filing is now held for the sitting rather than the browser, so it is off unless it was opened in this tab, and the Strokes chip is gone, since the kanji page a row already leads to opens the same animation in the same number of clicks. The Burned list's offer to apply WaniKani's burned items counted every burned item rather than the ones not applied yet, so it still said Apply 1,728 after applying them; it counts what is left and disappears at zero. Removing an item from a list showed a mark on every card with no mode to explain it, and is now behind an Edit toggle in the viewer. And searching inside a list read the raw string, so water found and mizu found nothing while the search box on the same page found both: both list surfaces now read a query the way search does, romaji turned to kana and tried against the readings. Reported 2026-09-02 by John with screenshots.

    Area
    study
    Name
    ひろえるひびき · 拾える響き Hiroeru Hibiki · a sound you can pick up, however you type it
  • v0.246.0The list viewer edits, resets and says what it isはずしてもどるHazushite Modoru2026-09-02

    Three things John found opening his own lists. Opening a saved list offered Choose and no way to take an item out - the remove button the Trouble and Favourites lists always had now works on a saved list too, in place. Choosing was remembered across lists, so closing one list and opening another opened it still choosing, with the first list's picks counted; choosing resets when a different list opens. And the viewer's title was the bare name with a '10 items' pill in the toolbar, so nothing said this was a saved list: the title now says Saved list above the name and carries the count beside it, and the search box has a clear button and offers the list's own items as they are typed, like the other search boxes. Reported 2026-09-02 by John.

    Area
    study
    Name
    はずしてもどる · 外して戻る Hazushite Modoru · taken out, and back where you started
  • v0.245.0A burn list that hides what you knowのけるきおくNokeru Kioku2026-09-02

    A third built-in list beside Trouble and Favourites: Burned, for the items you know so well you never need to read them again. It starts empty for everyone, and is marked by hand with a third mark - a small flame - on every glyph the other two marks are on. A member with WaniKani connected opens the Burned list and sees an offer with the count on it, Apply 157 burned from WaniKani, applied on the click and again whenever they like, never silently on sync. Applied, a Hide burned toggle on the list viewer and on every list page takes those items out and says how many went, so a list never looks shorter than it is without saying why. There is no practice sheet for what you know. Requested 2026-09-01 by John.

    Area
    study
    Name
    のけるきおく · 除ける記憶 Nokeru Kioku · what you already know, set aside
  • v0.244.0Archive a list instead of deleting itねかせてまもるNekasete Mamoru2026-09-02

    A private list nobody else has seen is deleted, as it always was. A list that others hold - shared by link or public, followed, copied, or with suggestions waiting - is archived instead: closed to change for everyone, the owner included, still readable, copyable and followable by everyone who had it, and listed under Archived on the owner's Lists page with Restore and Delete for good. The confirmation says which of the two will happen before the click, and deleting for good says who loses the link. A follower whose list has gone private or away sees so on their own page. Requested 2026-09-01 by John.

    Area
    study
    Name
    ねかせてまもる · 寝かせて守る Nekasete Mamoru · put to rest, and kept for those who hold it
  • v0.243.0Open lists, locks and proposalsぬしがきめるNushi ga Kimeru2026-09-01

    A shared list can be opened so anyone who can see it adds to it at once, or kept locked, from a control beside the visibility. On a locked list a member's addition becomes a suggestion, typed into a box on the list's page with a note on why; taking an item out is always a suggestion, whoever asks, since a list open to additions is not open to being emptied. The owner sees the suggestions on the list itself - the item, the verb, who asked, when and why - and approves or declines each one; approving changes the list on the spot, and a suggestion that would decide nothing is never made. Requested 2026-09-01 by John.

    Area
    study
    Name
    ぬしがきめる · 主が決める Nushi ga Kimeru · the owner decides
  • v0.242.0Copy or subscribe to a list you are viewingにたものNita Mono2026-09-01

    Reading somebody's list now offers two ways to keep it, for two different promises. Copy makes a list of your own from its items - named so it fits on your shelf, Week 1 (copy) if you have a Week 1 - and remembers where it came from, while the source counts one more copy. Follow keeps the owner's list as theirs: read-only, always current, listed under Following on your Lists page with the owner's name, and dropped from there. A list made private since you followed it says so. The add-to-lists column from search sits on the list page as well, so one row of a friend's list can be tagged or filed into a list of your own. Both need exactly the permission that opening the list needs. Requested 2026-09-01 by John.

    Area
    study
    Name
    にたもの · 似た物 Nita Mono · a copy that is yours, or theirs to keep
  • v0.241.0Public and private lists, with a link to shareなづけたじゅうしょNazuketa Juusho2026-09-01

    A list is a first-class thing, so it has an address of its own: /users/<member>/lists/<name>, the name in kebab case, a Japanese name kept as itself. The owner chooses Private, Link only or Public from the page. Link only makes an unguessable key the moment it is chosen, and the copy button hands out the link; Public needs no key. Whoever may open the list gets the same page - the name, who made it, when it was made and last changed, how often it has been shared, kind chips, a search, cards or rows - and somebody not signed in gets one quiet card inviting them to sign in and keep it. A private list reads as absent to everyone else. Names are displayable - letters in any script, digits and a title's punctuation, stray marks dropped - and two names that would share an address are refused. Requested 2026-09-01 by John.

    Area
    study
    Name
    なづけたじゅうしょ · 名付けた住所 Nazuketa Juusho · an address with a name on it
  • v0.240.0Lists hold every kind of itemとりよせたしなToriyoseta Shina2026-09-01

    A list was a string of characters, which is why it could only hold kanji and why a word added from search became its kanji. A list holds items now, each with its kind - radical, kanji, word, sentence - named the way its own catalogue names it, with WaniKani's id beside it where there is one, so a kanji WaniKani does not teach is still an item. A card previews words whole and shows kind chips; the viewer filters by kind; the editor takes kanji and words typed or pasted, reading a run of kanji one by one and anything with kana as a word; the search filer files a word as a word. The Lists page searches, sorts by last change, name or size, and reverses. Production's two lists were copied into items with a snapshot first, item for item. The base for every sharing feature; the first of the lists programme.

    Area
    study
    Name
    とりよせたしな · 取り寄せた品 Toriyoseta Shina · the items, gathered as what they are
  • v0.239.0Add to lists does not widen the dropdownてざわりのはばTezawari no Haba2026-09-01

    Pressing Add to lists opened the filing column in the rows, but the dropdown kept its width, so on a desktop the chips were crushed against the meaning instead of sitting in a column on the right. The box that widens and the list that shows the column each kept their own copy of the open flag, and nothing told the box. One flag now, held once, with everything that shows it subscribed - flip it anywhere and the box and the rows change together. The cell sits inline only from the width where the box is truly wide; below that it drops to a line under the row, as on a phone. Reported 2026-09-01 by John.

    Area
    study
    Name
    てざわりのはば · 手触りの幅 Tezawari no Haba · wide enough to reach the column
  • v0.238.0Map viewer and study pageつながったとちTsunagatta Tochi2026-09-01

    The Map game held every prefecture's shape and a page of facts about it, and showed them one question at a time. The new Map page, under Explore, lays the same data out to be read. A large map fills the page; every region highlights under the pointer or a finger and says its name, and choosing one puts everything known about it beside the map - its name in its own script, its capital, size and population, what it is called, what it is number one for, its food, landmarks, symbols, emblem and history, and for a prefecture the kanji it is written with, each linking to its own page. On a phone the facts come up over the map instead. A country picker switches between Japan, the United States and Canada. The country and the chosen region ride in the address, so a page about Tokyo can be sent to somebody and opens on Tokyo, and the back button walks the choices. Requested 2026-09-01.

    Area
    games
    Name
    つながったとち · 繋がった土地 Tsunagatta Tochi · the land, joined up and read
  • v0.237.0Put explorer filters in the addressちょくせつたどるChokusetsu Tadoru2026-09-01

    Choosing N5 on the JLPT explorer changed nothing about the URL, so a filtered view could not be linked, bookmarked or reloaded. The level and study explorers had already put their filters in the address when they became real routes; this one had not followed. Its levels, WaniKani filter, level and grade filters and the sticky toggle are now written to the address as they change and read back on arrival, where the address wins over what the browser remembers - so a link to N5 opens on N5 whatever the last visit chose. A filter at its default says nothing, so a plain link stays plain.

    Area
    study
    Name
    ちょくせつたどる · 直接辿る Chokusetsu Tadoru · reached directly, by its address
  • v0.236.0Add to lists from searchたばねたてがかりTabaneta Tegakari2026-09-01

    Searching ten kanji and keeping each one meant, for every kanji: open it, find the tag on its page, go back, search the next. The results dropdown and the search page now carry an Add to lists control at the edge of the list. Opened, every row grows a quiet column: the trouble and favourite marks the explorers use, then one small chip per saved list, lit when the row is already on it and toggled with a tap. The dropdown widens to make room; in the narrower search columns and on a phone the column drops to a line under the row. Kanji the JLPT and school-grade catalogues answer with borrow their WaniKani twin's id so they can be tagged too, and a word contributes its kanji to a list rather than its kana. Whether the column is open is remembered per browser. Requested 2026-09-01 by John.

    Area
    study
    Name
    たばねたてがかり · 束ねた手掛かり Tabaneta Tegakari · the clues, bundled as they are found
  • v0.235.0Stroke order in the faces a learner meetsそなえたしょたいSonaeta Shotai2026-09-01

    The stroke-order panel showed the character in two faces, Gothic and Mincho, each captioned in capitals underneath, and the captions drew the eye from the shapes. They are gone; the face's name is a hover title now. Two more faces join them, the two a learner actually meets: the textbook face (kyoukashotai), the handwriting standard every Japanese school teaches from and the one to copy where a printed form and the written form part ways, and a brush face the printed forms descend from. Neither ships with any system, so both come from Google Fonts at runtime, swapped in when they arrive. The four sit in a two-by-two grid beside the drawing, printed faces above and written faces beneath, and the stroke count pill has moved to the right of the header. Requested 2026-09-01.

    Area
    study
    Name
    そなえたしょたい · 備えた書体 Sonaeta Shotai · the faces a learner meets, provided
  • v0.234.0The word page gets its neighbourhoodせつぞくのきんじょSetsuzoku no Kinjo2026-09-01

    A word page listed the kanji it was written with and stopped - a dead end with two chips on it. It now goes on to the other words built from those same kanji, easiest first, so a page about one word is a way into its surroundings. Two sources could have supplied the list: each kanji's JLPT word examples cover more characters, but an example is only a string, with no level and no page unless the catalogue happens to hold it; each kanji's WaniKani words are catalogue rows with a level and an address, and every one of them has a page. The neighbourhood is drawn from the WaniKani words, because a list of places to go beats a longer list of names.

    Area
    study
    Name
    せつぞくのきんじょ · 接続の近所 Setsuzoku no Kinjo · the neighbourhood, joined up
  • v0.233.0A new Google sign-in lands on the invite-code pageすなおないりぐちSunao na Iriguchi2026-09-01

    Signing in with Google for the first time, with the site open to anyone, landed on Join with invite code - with no code, no way in and no way out but Sign out, and a refresh brought it straight back. The home page, the sign-in screen and the invite form itself each sent a signed-in viewer with no account to the invite form, while the page that actually creates an account was reachable only by typing its address. One rule now decides where such a viewer goes: the account page while signup is open, the invite form only when it is invite only. The invite form applies the rule too, so a newcomer cannot be shown it while the door is open, on arrival or on a refresh. Reported 2026-09-01 by John, signed in as a second Google account.

    Area
    account
    Name
    すなおないりぐち · 素直な入口 Sunao na Iriguchi · an entrance that does what it says
  • v0.232.0Winter campaign maxes at ¥40,000しずめたしひょうShizumeta Shihyou2026-09-01

    The Winter Reading Challenge was made by carrying the July campaign's final weekly cap across fourteen weeks, which came to a ¥96,000 base - far more than the ¥40,000 the family had in mind. The campaign is repriced: the ¥40,000 is spread flat across its fourteen weeks in tens of yen, the rounding paid in the final week so a perfect reader reaches the target on the goal date exactly, and the bonus caps keep July's proportion of bonus to base so a great week is still worth more than a good one. The campaign scripts now size the caps to a decided target rather than only printing it, and a reprice script changes both for a campaign already running.

    Area
    reading
    Name
    しずめたしひょう · 静めた指標 Shizumeta Shihyou · the target, brought down to size
  • v0.231.0The open user menu renders under the list's sticky headingさしこむそうSashikomu Sou2026-09-01

    With the account menu open on a page showing a list, the list's sticky column headings drew straight across it. The panel itself sat at a layer nothing should beat, but its wrapper carried a small z-index of its own, and a wrapper with any z-index starts a stacking context - so the panel's layer only ordered it against its siblings, and against the page the whole menu was worth ten while a heading was worth twenty. The wrapper takes a named layer now, above page chrome and below the sheets and modals that must cover the header, and a test checks it against every sticky heading a list can draw.

    Area
    admin
    Name
    さしこむそう · 差し込む層 Sashikomu Sou · slid into the layer it belongs to
  • v0.230.0Lists at the top level; Admin only in the menuここのこたえKoko no Kotae2026-09-01

    Lists lived under Explore, which is where you go to find things; a list is something you made and come back to, and it was two clicks from everywhere. It is a destination of its own in the header now. Admin went the other way: it is a workspace rather than a place a member studies, so it has left the header row - which is now the same for everyone - and appears once in the account menu, for admins. The menu used to repeat every admin page, eleven entries, which was a second copy of the admin workspace's own tab row; the workspace is one click away and its tab row is the registry.

    Area
    platform
    Name
    ここのこたえ · 個々の答え Koko no Kotae · each thing in its own place
  • v0.229.0Winter Reading ChallengeけいぞくのけっかKeizoku no Kekka2026-09-01

    Hanako and Kamiko keep reading. The Winter Reading Challenge runs from 1 September to 6 December 2026, fourteen weeks, the Sunday of the week John named as the end. It was made from the July campaign the way the July one was made from the spring one, by hand at the time: the same thresholds, bonuses and streak, the weekly caps held flat at July's final week for every week of the window, the target their sum, the adults' opt-outs carried over so the leaderboard shows the same people, and the girls' books carried over so a book started in July can be checked in tomorrow. The July campaign is marked completed, which is what the site does itself when a new one activates. The making is a script now - pnpm campaign:create - that validates with the editor's own schema, snapshots every table it touches before writing, and does the whole change in one transaction, so the next campaign is made the same way rather than a slightly different way.

    Area
    reading
    Name
    けいぞくのけっか · 継続の結果 Keizoku no Kekka · what keeping at it adds up to
  • v0.228.0The planned tab shows its queue out of orderくんだじゅんばんKunda Junban2026-09-01

    The admin release page sorted planned work by its place in the queue and then grouped it by the month of its estimated date, so the headers read September, August, September and the list looked as though it had lost its order. The estimates are typed by hand and mean little - one sat on a day that had already passed. A queue is not a calendar. The planned tab is one list now, in queue order, with each item's position shown where a release shows its version; the month grouping stays for what has shipped, where the date is a fact.

    Area
    admin
    Name
    くんだじゅんばん · 組んだ順番 Kunda Junban · the order it was queued in
  • v0.227.0On and kun, labelled in JapaneseきこえるきごうKikoeru Kigou2026-09-01

    The reading labels said On readings and Kun readings in English and nothing else, so a student asked about on'yomi on a test had never met the word here. Every label now carries the Japanese beside it - 音読み, 訓読み, 名乗り - with the romaji in a hover title. The readings under each are written the way a dictionary writes them, on in katakana and kun in hiragana, whichever way the source stored them: KANJIDIC had it right, the school tables sometimes did not, WaniKani never did, and one conversion now settles it for every page. Where there is room the romaji sits beside each reading in a lighter weight, for the reader still weak in kana, and steps aside on a phone. One component draws the line - the dictionary block, the grade cards, the grade list's two lanes, the JLPT detail and the stroke-order header all take it - so the label cannot be spelled two ways and the script cannot differ between pages.

    Area
    study
    Name
    きこえるきごう · 聞こえる記号 Kikoeru Kigou · a reading you can hear as well as see
  • v0.226.0A page for every source, and what we hold from itかぞえてかくにんKazoete Kakunin2026-09-01

    Every credit on the site linked straight out to its vendor, which answered who and nothing else. Each one now leads first to a page of ours about that source: what we hold from it in numbers, when it was last brought in and how long ago that is in words, which release of theirs it came from where they publish one, what we take and under what terms, and only then the way out. Six sources have a page - WaniKani, KANJIDIC2, KanjiVG, kanjiapi.dev, Tatoeba and the school curriculum tables - each a tab away from the others, with an overview reachable from the footer. The three that live in the database stamp their own imports; the three built into the site as files say which upstream version they were built from. A credit is addressed by a key now rather than by an object, so a new source is one registry entry, one description and one page that already exists.

    Area
    platform
    Name
    かぞえてかくにん · 数えて確認 Kazoete Kakunin · counted, and checked against its source
  • v0.225.0The timeline is the ticket boardおなじちょうめんOnaji Choumen2026-09-01

    Several agents work this repository at once, in sessions that cannot see each other, and requests were being tracked in the chat that received them - which is how a fix could ship for something nobody had written down, and how two sessions could build the same thing. The timeline JSON was already the one file they all read, so it is now the board. Every request, bug or idea goes in before the work starts, through pnpm backlog add, which takes a free ordering number, today's Vancouver date and the file's own escaping - the three things that went wrong when the file was edited by hand. An agent claims an entry before building it and puts it down if it stops; a claim cannot be taken over, only released. pnpm backlog prints what is open, what is in progress and who holds it, and how many are bugs, because a bug and a feature now say which they are. The admin release page shows the same claim and the same bug flag on each planned row. The rule is written into the agent instructions, so it holds for the next session as well as this one.

    Area
    platform
    Name
    おなじちょうめん · 同じ帳面 Onaji Choumen · one ledger, kept by everyone
  • v0.224.0One foot for every creditえらんだあしもとEranda Ashimoto2026-09-01

    Every section of a subject page names where its content came from, and each named it a different way: the stroke-order panel with a rule across the full width and a small centred line beneath it, the dictionary facts with a left-aligned line at another size, the compounds and the relations and the mnemonics each at their own indent. Five cards down a page, five feet. The stroke-order foot was the right one and is now the only one. The credit component draws it, the block shell places it at the foot of the card with the rule running edge to edge, and every section that shows borrowed content sits on that shell - sentences, dictionary facts, the word and radical header, the stroke-order panel itself, which had been drawing its own copy of the style it inspired. The stroke animation alone keeps an inline line, because it draws inside another surface and has no edge of its own to put a rule on.

    Area
    study
    Name
    えらんだあしもと · 選んだ足元 Eranda Ashimoto · one footing, chosen for every card
  • v0.223.0The kanji page knows what the study viewer knowsうかぶうちがわUkabu Uchigawa2026-09-01

    Every search result lands on a kanji's own page, and that page knew less about the character than the study viewer behind the sign-in wall. It had the strokes, the dictionary facts and the sentences; it had no compounds, no radicals, no look-alikes, no vocabulary and no mnemonics - and the compounds are the reason anyone looks a kanji up. It has all of them now, and it is built as an ordered list of blocks, each fed by exactly one source and each drawing nothing when it has nothing. The layering is the decision that shaped it: the dictionary sources are the root and WaniKani is the bonus. KANJIDIC answers for all ten thousand characters, the JLPT table adds the words for the two thousand the exams cover, and WaniKani adds its radicals, look-alikes, vocabulary and mnemonics for the two thousand it teaches. A character WaniKani has never heard of gets a complete page; one it teaches gets a better one. The word inside a compound is not a link - most are not WaniKani vocabulary and would land on a page saying nothing is there - but every kanji inside it is, and every chip goes through the same address function the search results use, so following a result and following a chip land in the same place. The word and radical pages took the same blocks on the way, so a related chip or a mnemonic reads the same on all three. The page stays the same for every reader: a member's own study state is a block for a later release, not a reason to make a shareable address vary by who opens it.

    Area
    study
    Name
    うかぶうちがわ · 浮かぶ内側 Ukabu Uchigawa · the inside of a character, surfacing
  • v0.222.0One list component, columns per pageいちらんのわくIchiran no Waku2026-09-01

    Every list of characters here shows a different set of fields, and always did: the study queue has an SRS stage, the grade explorer has on and kun readings and no SRS at all, the JLPT explorer has a school grade and an N level. What went wrong was letting that difference decide the layout too, so five surfaces grew five sets of row markup and five ideas of where a reading goes. A list declares its columns now - a heading, a lane width, and how to draw one cell - and the shared component owns everything else: the single surface with hairlines between rows, the aligned lanes, a heading row that cannot drift from the cells beneath it because both read the same widths, the checkbox, the row button, the leading and trailing slots, and what folds away on a phone. The grade explorer shows item, meaning, on, kun, strokes and JLPT; the JLPT explorer shows item, reading, meaning, grade, JLPT, status and SRS; the study queue and history keep the WaniKani six. Different fields, one shape. The explorers' detail panel opens under the row that was clicked through a slot of its own, which was the last thing about their lists that no column could express and the reason each had kept private row markup for so long.

    Area
    study
    Name
    いちらんのわく · 一覧の枠 Ichiran no Waku · one frame for every list
  • v0.221.0A digit is a numberあらびあのすうじArabia no Suuji2026-09-01

    Searching for 1 found nothing at all. Not a near miss - nothing: the catalogues hold and the meaning One, and neither of them contains the character 1, so a search that matches substrings of characters, readings and meanings had nothing to match against. Typing a digit is a reasonable way to ask for a number and every dictionary a learner has used answers it. A digit now reaches the number it names: 1 finds and One, 10 finds , 24 finds 二十四, and a digit inside a phrase is read too, so 2 people reaches . The round ones are offered both ways, spelled out and bare - ten thousand is written 一万 but the character somebody typing 10000 wants is . A full-width digit reads the same, since that is what a Japanese keyboard produces. Above eight figures it offers nothing rather than a long spelling that would match nothing, and a query with no digits in it is left exactly as it was.

    Area
    platform
    Name
    あらびあのすうじ · アラビアの数字 Arabia no Suuji · the digits everyone types
  • v0.220.0Results in columns, with filtersわけてならべるWakete Naraberu2026-09-01

    Search answered with one ranked column and a pill on every row saying which catalogue it came from. That is right and it is not enough: four catalogues answer a common character at once and they answer different questions - WaniKani knows what you are learning it as, the school grades know when a child is taught it, the dictionary knows the characters nobody teaches - and interleaving them by score left the reader sorting that out row by row from a pill. They sit side by side now, one column each, so a catalogue's whole answer reads or is ignored in a glance, and a column that found more than it shows opens on its own. Above them is a filter row on both axes, because the results have two and neither answers the other's question: what kind of thing a row is decides whether it is worth reading, and which catalogue holds it decides which column it sits in. A chip that is off keeps its count, so a hidden kind reads as hidden rather than as absent, and turning the last one off turns everything back on rather than leaving a page with nothing on it. The filters ride in the address, so a narrowed search can be sent to somebody and the back button walks them. The arrows learned the shape: up and down walk a column, left and right cross between them, keeping the row where the next column is long enough and clamping to its last row where it is not - WaniKani answers with forty-five rows and the school grades with one, so every sideways move is between lists of different sizes and a move that landed on nothing would read as the keyboard being broken.

    Area
    platform
    Name
    わけてならべる · 分けて並べる Wakete Naraberu · sorted apart and set out side by side
  • v0.219.0Say whose work it isろごのなふだRogo no Nafuda2026-09-01

    Four sources are borrowed here and three of them were credited. Tatoeba's sentences named Tatoeba, the stroke drawings named KanjiVG, the dictionary facts named KANJIDIC2 - each drawing its own paragraph, in its own file, with its own idea of what an external link should do. The meanings, the readings and the mnemonics are WaniKani's, they are by far the largest borrowing of the four, and they named nobody. They do now, on the vocabulary and radical pages and in the explorer's detail panel, and the four paragraphs are one component - so the next surface that shows borrowed content credits it by using the thing that draws it rather than by somebody remembering to. A source under its own terms rather than a public licence names no licence, and is not made to look as though it granted one. The credit itself moved out of the sentence loader on the way, which is server-only: a client component that wanted the Tatoeba credit was dragging the database client into the browser bundle.

    Area
    platform
    Name
    ろごのなふだ · ロゴの名札 Rogo no Nafuda · the nameplate on the work
  • v0.218.0A list is one surface, not forty boxesれつのなかみRetsu no Nakami2026-09-01

    Three things a member could not do, all of them about lists. A list you saved yourself offered rename, edit characters, delete and practise, so the one thing you could not do with it was read it - the card's wall of glyphs was the whole view, with no meanings, no readings and no way into the glyph viewer. It opens now, into the same panel the Trouble and Favourites lists have always used, and the characters on the card open it as well as the Open action beside them. Bulk selection was reachable in the grid, where every card carries a checkbox, and unreachable in the list, where a row had none and clicking one opened the review modal instead of picking it - so a set could be gathered in one density and not the other, and Save to list sat above a list it could not be fed from. Rows carry the same checkbox now, and the same shift-click range. And the explorers drew their lists as forty bordered boxes stacked with gaps, each one an edge for the eye to stop at, while Study and History drew one surface with hairlines between the rows. Grades, the WaniKani library and the JLPT explorer take that chrome from the same place now.

    Area
    study
    Name
    れつのなかみ · 列の中身 Retsu no Nakami · what is inside the row
  • v0.217.0A way back out of the resultsるーとのもどりRuuto no Modori2026-09-01

    Arrowing down through the results was a one-way trip. The list loads the next stretch as you approach the end, so it grows under you: forty rows into the search box was far off the top of the screen, and the only route back was pressing up forty times - and overshooting downward on the way loaded more rows to climb. Nothing was looping, but nothing was leading out either, which reads the same from the keyboard. Escape now returns to the box from any row, and Home goes to the first row and then out to the box, both in a single press. Coming back also scrolls the box into view, which it did not before: the results scroll inside their own card on a page that scrolls too, so focus could land on a box still hidden above the results and typing went somewhere nobody could see.

    Area
    platform
    Name
    るーとのもどり · ルートの戻り Ruuto no Modori · the way back along the route
  • v0.216.0Recent items, not recent searchesりょうほうのこすRyouhou Nokosu2026-09-01

    The history remembered what you typed and forgot what you found. Search water, read down forty rows, open 水兵 - and what was kept was water. The question was recorded and the answer thrown away, which is backwards: the thing worth getting back to is the word, not the guess that led to it. Anything that opens a subject now adds to the list, from the results rows and from the suggestions under the box alike, so it grows as the browser is used rather than only when the search page is visited. A remembered subject reads like the row it came from - its glyph in its type's colour, its meaning beside it - and a remembered search keeps the clock icon, so the two kinds of row are told apart at a glance. Entries are kept by where they lead rather than by what they say, because the kanji and the word are one character and two pages, and keying on the character would have quietly dropped whichever was opened first. It is one store behind one key, so the header dropdown, the phone sheet and the results page are three views of the same history.

    Area
    platform
    Name
    りょうほうのこす · 両方残す Ryouhou Nokosu · it keeps both
  • v0.215.0A result opens the thing it foundらいちゃくのばしょRaichaku no Basho2026-09-01

    Searching for 水泡 found it - Foam, vocabulary, level 46 - and selecting it opened the library explorer, which answered No item matched 水泡 about the word it had just been shown. The explorer was not being stubborn: it is built from the member's own levels and stops at theirs, so a member on level 17 has no level 46 for the word to appear in, and no filter would have helped. Results led to a list, and a list is free to answer with nothing. Words and radicals now have pages of their own, next to the kanji page that already existed, and every result leads to one: one subject, named in the path, showing its meanings, readings, the WaniKani explanation, the kanji it is built from or the kanji built from it, and example sentences that use it. They are public, because they describe a subject and not a member - which also ends the other half of this, where a signed-out reader got no link at all for a word or a radical and the row was dead text that looked like a link. Radicals are addressed by name rather than by glyph, since WaniKani draws a good number of them and those have no character to be addressed by. The address takes no viewer at all now, so a link copied out of a search works for whoever it is sent to.

    Area
    platform
    Name
    らいちゃくのばしょ · 来着の場所 Raichaku no Basho · the place you arrive at
  • v0.214.0One list layoutよこならびのよみYokonarabi no Yomi2026-09-01

    The best list of subjects on the site was the one nothing could reuse. Choosing items in bulk opened a six-column table - item, reading, meaning, type, level, SRS - and it read better than every other list here, because a column of subjects is scanned one field at a time and that table was the only place the fields lined up. Everywhere else the reading sat squeezed under the meaning in a row that flowed to fit, so no two rows put anything in the same place. The table is gone and its shape is the shared list: study history, the study queue, the Trouble and Favourites lists and the bulk panel itself now draw the same lanes under the same headings, from one set of widths that the headings and the rows both read, so neither can drift from the other. On a phone the narrow lanes fold away and the reading returns under the meaning, because six columns do not fit in 393 pixels and a truncated reading is worse than a stacked one. Two things came with it: a row in the bulk list now removes its own item, where before picking one thing by mistake meant clearing all of them and starting over, and Select Visible works before anything is selected - it had been disabled until you had already chosen something by hand, which is the moment you least need it.

    Area
    study
    Name
    よこならびのよみ · 横並びの読み Yokonarabi no Yomi · readings set side by side
  • v0.213.0One count, not twoゆいいつのゆびさしYuiitsu no Yubisashi2026-09-01

    Searching the WaniKani explorer printed the answer twice. A line above the results said Showing 5 search results and the line on the toolbar said Showing 5 of 5 items - the same number, two sentences, neither of them wrong, and no way to tell whether they were counting the same thing or two different things that happened to agree. There is one count now, and a search changes what it says it is counting rather than adding a second opinion beside it: forty of sixty-nine items when you are browsing, five of five search results when you are searching.

    Area
    study
    Name
    ゆいいつのゆびさし · 唯一の指差し Yuiitsu no Yubisashi · one finger pointing, not two
  • v0.212.0Every member page is a pageやねのあるやどYane no Aru Yado2026-09-01

    Six member addresses were not pages. Study, the WaniKani and JLPT explorers, Read, Stats and News were rewrites onto one component - the address bar said one thing and the server was handed the same file with a dashboard parameter, so the query string had never gone away, it had only stopped being visible. That is why those six drifted into six different layouts without anybody editing six files, and it had a standing cost: the shared file loaded every level snapshot on the account for all of them, so opening Read to read a table of yen fetched seventeen levels of WaniKani subjects it would never show. The three explorers were a second layer of the same thing, all three built at once with two hidden by stylesheet. Each of the six is a real route now and loads only what it shows. Read wants an account id. News wants the member's level. Only the JLPT explorer pulls the JLPT table and the member's kanji index, which used to be decided by a query parameter and is now decided by which page you asked for. The shared work is two loaders rather than one long file, the tab-switching component is gone because routing does that, and there are no rewrites left at all. A test holds the line, because a rewrite is the easy way to add an address and it is the wrong one: it buys a URL and skips the page.

    Area
    platform
    Name
    やねのあるやど · 屋根のある宿 Yane no Aru Yado · every lodging with a roof of its own
  • v0.211.0A search outranks the filters it lands inもとめるもくひょうMotomeru Mokuhyou2026-09-01

    Following a search result into an explorer landed in whatever that explorer was last left set to. Searching inu and clicking the dog arrived in a lesson-mode queue: of 157 matches it showed 2, and not one of the 34 kanji - the very character searched for among them. No filter on screen explained it, because the mode had been restored from the last visit rather than chosen, so it read as the search being broken. A search in the address now outranks the restored state: the queue mode, the tagged-list filter and the locked toggle are skipped rather than restored and then undone, which was a race the restore won about half the time. The searches you already ran also appear in the header dropdown, not only on the search page. It is the same component reading the same store on both, so an empty box offers the same thing wherever it is, and typing replaces them with suggestions as before.

    Area
    platform
    Name
    もとめるもくひょう · 求める目標 Motomeru Mokuhyou · the mark you are aiming for
  • v0.210.0Read and News are real pagesめくっためやすMekutta Meyasu2026-09-01

    Six member addresses were not pages. Study, both explorers, Stats, News and Read all pointed at one file through a rewrite - the address bar said /users/john/read and the server was handed /users/john?dashboard=read - so the query string had not gone away, it had only stopped being visible. That is why those six had drifted into six different layouts without anybody editing six files, and it had a running cost: every one of them loaded every level snapshot on the account, each carrying that level's subjects, so opening Read to look at yen totals fetched seventeen levels of WaniKani data it would never show. Read and News are real pages now, with their own routes and their own loading. Read needs an account id. News needs the member's level. Neither needs anything else, and neither asks for it. The shared work - who is asking, whose page it is, whether they may see it - is one function rather than six copies. Stats and the three explorers are still on the old page and are the next to move.

    Area
    platform
    Name
    めくっためやす · めくった目安 Mekutta Meyasu · the guide turned face up, no longer folded away
  • v0.209.0Lists you can actually manageむかえるむねMukaeru Mune2026-09-01

    The page is called Your lists and had no way to make one: every list had to begin as a selection on an explorer, saved under a name. That is one honest way to build a list and not the way somebody starts kanji I keep losing - they name the thing first and fill it as they meet them - so arriving here wanting to start one found nothing to click. There is a New list button on it now, and a list may be empty, which is what lets the naming come first; a list holding nothing says so rather than showing a blank strip. Emptying an existing list by editing is allowed for the same reason, since permitting an empty list to be created while refusing to empty one is a rule that holds in only one direction, and deleting is still its own button for being rid of the list rather than of its contents. The contents preview was set in the kanji accent at the card's heaviest weight, so a strip of thirty-five characters shouted over the name that identifies the list; the characters are what the card is about, but the name is what you scan for, so the preview is quieter and the name leads.

    Area
    platform
    Name
    むかえるむね · 迎える棟 Mukaeru Mune · the roof that takes you in
  • v0.208.0Every admin header the same wayみだしのみほんMidashi no Mihon2026-09-01

    Three admin pages drew their tab row as a band of their own underneath the header, while the other five put it inside the header beside the release name. Signup, Feature flags and a member's history were the three, so on those the codename sat above the tabs and everywhere else it sat beside them - the header changed shape as you moved between tabs of the same workspace, which is exactly the sort of thing that makes a set of pages feel unfinished without it being obvious why. The shared header has had a slot for this since the admin tabs were folded into it, and these three had simply never been moved across. They pass their tab row into that slot now, and all eight admin pages build their header the same way.

    Area
    admin
    Name
    みだしのみほん · 見出しの見本 Midashi no Mihon · one heading for every page to go by
  • v0.207.0The selection shows what is in itまとめるまくらMatomeru Makura2026-09-01

    The selection bar said twelve chosen and showed none of them, which is where a count stops being useful: you cannot tell whether the one you meant went in, whether a shift-sweep took one too many, or which of the twelve is the mistake, and the only remedy was to clear everything and start again. The chosen characters now sit in the bar as tags, each one removable by clicking it, so a wrong pick costs a click rather than the whole selection. Collapsed it is a single line ending in what is left over, since eighty characters would otherwise push the buttons off the screen, and the full set is one click away. Saving gained the other half of its job at the same time: it only ever made a new list, so building one across three sittings left three lists named almost the same thing. The lists that exist are offered first, each showing how many of the chosen it does not already hold, with naming a new one underneath. Adding is a union rather than a replacement, which is the difference between extending a list and emptying it.

    Area
    platform
    Name
    まとめるまくら · まとめる枕 Matomeru Makura · the pillow that gathers it all up
  • v0.206.0The admin roundほどいたほころびHodoita Hokorobi2026-09-01

    Five things reported together, and one of them was hiding in every admin page rather than the one it showed up on. The release codename in the header refused to give up space, so on admin - ten tabs in the row beside it - it simply ran off the right edge and was cut in half; it shrinks and wraps to its own line now. Every admin page wrapped itself in a rule that clips anything reaching past its edge, which does nothing at all except cut off the user menu, and only looked like an Articles bug because Articles is short enough for the menu to reach past the bottom. The users table carried a filled button on every row labelled Open as user, which reads as impersonation: it is a plain link to the member's page, nothing is done as them, so it says View page and sits in the row menu with the other four actions instead of making the most ordinary thing look like the most consequential one. The signup settings laid three short choices out as three full-width bars on a screen over a thousand pixels wide, so the two questions could not be seen together; they are a grid. And the study history table listed twenty thousand answered reviews by subject id alone.

    Area
    admin
    Name
    ほどいたほころび · ほどいた綻び Hodoita Hokorobi · the seams let out, so nothing is cut off
  • v0.205.0One top for every member pageへいこうなへだてHeikou na Hedate2026-09-01

    Study, the two explorers, Stats, News and Read are one page under six addresses, and each had grown a different top. Study and the explorers opened with a decorative banner and then kept their real title inside a filter panel that can be collapsed. Stats and Read had each built a header card of their own, similar but not the same. Read went further and put its Challenge and Check-ins toggle on a row above that card, so its heading sat a row lower than on any sibling - which is what made the set look less like one product the more of it you visited. There is one header now: a picture, the page name, a line saying what the page is for, and room on the right for what the page lets you do. The picture is per page, deliberately, because a page should still read as itself at a glance; the arrangement is not. The banner is gone from these six, the two private header cards are gone, and the toggle that used to push a heading down now sits below it with the rest of the content. What is still uneven, and is the next piece rather than a thing anybody should have to notice twice, is that the three explorers name themselves a second time inside their own panels.

    Area
    platform
    Name
    へいこうなへだて · 平行な隔て Heikou na Hedate · walls set parallel, every room the same shape
  • v0.204.0The history table shows the characterふだにふでFuda ni Fude2026-09-01

    The admin study history listed twenty thousand answered reviews with a Subject column holding nothing but a number. A page of it read as a column of five figures, and there was no telling which row was about which character without looking every id up by hand - on the one screen whose whole job is reviewing what somebody answered. The character sits there now, with its id underneath in small type, because the id is still what the edit and delete actions act on and what a bug report quotes; it is just not the thing being read. The characters come from the local catalogue in a single query for the twenty or fifty rows a page actually shows, the same shape the table already used to turn account ids into names. A row whose subject the catalogue does not hold shows the id alone rather than a blank, since a subject can be answered and later withdrawn by WaniKani and the number is then the honest answer.

    Area
    admin
    Name
    ふだにふで · 札に筆 Fuda ni Fude · a brush on the label, not a serial number
  • v0.203.0Searching stays on the gradeひきかえすひょうしきHikikaesu Hyoushiki2026-09-01

    Searching from the grade explorer threw away both the grade you were on and the thing you searched for. Standing on grade three and looking for a character put you on grade one with an empty search box. The grade had recently moved out of the query string and into the path, which is the right shape - the path says which collection you are looking at, the query says how you are reading it - and the reader that used to take a grade out of the query was removed along with it. What was not looked at was the search form, which went on submitting to the collection root with the grade as a hidden field, the shape from before. The root reads no grade any more; it only opens the first one. The form posts to the grade own address now and carries nothing but the search. A guard test holds the shape, because this is the failure mode of changing an address: the thing itself gets changed and one caller does not.

    Area
    study
    Name
    ひきかえすひょうしき · 引き返す標識 Hikikaesu Hyoushiki · the sign that sends you back where you were
  • v0.202.0A selection survives the page turnはずさないはさみHazusanai Hasami2026-09-01

    Choosing items on an explorer kept its state in the component, and turning to page two is a navigation: the page remounted and took the selection with it - both the characters picked and the fact that picking was happening at all. Building a list of twenty across three pages is the ordinary way to do it, and it could not be done. The selection is now held for the sitting rather than for the component, under a key per surface so the grade explorer and the JLPT explorer do not overwrite each other. A session is the right span: a half-built selection is a task somebody is in the middle of, so it should survive a page turn and a stray reload without being handed back next week. Three links built from a selection still pointed at the practice sheet's old query-string address and did nothing when clicked - the same shape of break as the chooser chips, in the places that were not on screen when that was fixed.

    Area
    platform
    Name
    はずさないはさみ · 外さない鋏 Hazusanai Hasami · the grip that does not slip
  • v0.201.0The practice chips work againのばすのこぎりNobasu Nokogiri2026-09-01

    Moving practice to /practice/jlpt/5 changed where the page reads its collection from and left every control on it still writing that collection into the query. Clicking G2, or WaniKani level 17, changed the address and nothing else: the page re-read a path that had not moved and rendered exactly what it was already showing. The link builder now produces the address the page actually reads - the collection in the path, and only how the sheet prints in the query - and a test asserts that what it writes parses back to what was asked for, which is the check that was missing rather than another eye on a screenshot. Building those links also dragged the server-only practice reader into the browser bundle, taking the page down with a 500, so the source names now live in a small module of their own with no database behind them. Verified by clicking the chips rather than by typing addresses, which is how the bug was found in the first place.

    Area
    platform
    Name
    のばすのこぎり · 伸ばす鋸 Nobasu Nokogiri · the saw that reaches further
  • v0.200.0The words the catalogue had missedねっこのねどこNekko no Nedoko2026-09-01

    Subject content is meant to come from the local catalogue rather than from WaniKani on every request - that is what makes the study queue quick. Ninety-eight subjects were not in it, so each one went out to the API instead, every time anybody's queue happened to include it. Almost all of them were the kana-only vocabulary a beginner meets first: これ, ホテル, おはよう, コーヒー, ありがとう. The reason was an interrupted sync months ago. A sync that stops keeps a cursor and a resumed run carries on from it rather than going back for what it skipped, so the gap stayed open and quietly widened as related words pointed at each other. There is a backfill for it now, and it is deliberately narrow: it works out what the app can ask for, subtracts what the catalogue holds, fetches only the difference, and inserts. It never updates and never deletes, because every row it writes was established as absent moments before - correcting content that is merely stale is the sync's job, and a tool that could overwrite is a tool that could lose something. It reports and writes nothing unless asked twice.

    Area
    platform
    Name
    ねっこのねどこ · 根っこの寝床 Nekko no Nedoko · a bed for the roots, the first words included
  • v0.199.0A list you can change your mind aboutぬきさしのぬいめNukisashi no Nuime2026-09-01

    A saved list was fixed the moment it was made. Renaming arrived a while back, so the label could be corrected, but what was actually in the list could not - taking one character out meant going back to an explorer, finding the other forty, choosing them all again and saving over the name. In practice nobody edited a list; they built a second one and left the first sitting there. Every list now has an Edit characters control beside Rename and Delete. The characters become the control rather than growing one beside them, because they are already the biggest thing on the card: tap one to take it out. Adding is a field you type into, since somebody who wants a particular kanji can type it faster than they can find it in a picker, and what is typed goes through the same tidying a saved selection does, so a pasted sentence and a chosen set reduce to the same thing. The whole edit is one save at the end rather than a request per character, which is one chance to go wrong instead of six. Emptying a list is refused: that is deleting it, and deleting has its own button and its own confirmation. While the panel is open the card's own preview and count stand aside, so there are never two different numbers on one card with nothing to say which is being changed.

    Area
    study
    Name
    ぬきさしのぬいめ · 抜き差しの縫い目 Nukisashi no Nuime · the seam you can unpick and restitch
  • v0.198.0A limit on signing upにっかのにもつNikka no Nimotsu2026-09-01

    The route that creates an account had nothing bounding how often it could be called. It was never as bad as it sounds - a Google session is required before it does anything, and an address that already has an account gets that account back rather than a second one, so the ceiling was always one account per address rather than one per request. What was unbounded was the work behind it. Every call reads the signup settings, looks up the account, and scans every slug on the site to pick a free address, and a signed-in caller could repeat all of that as fast as they liked. Six attempts in ten minutes now, which leaves room for a form submitted twice, a retried request and a reload, and stops a loop. It is counted against the signed-in address rather than the caller's network address, because a household shares one of those - this one does - and a per-network budget would have the second person in a family turned away by the first. The check sits above all three reads rather than beside them, since a limit applied after the work bounds the answer and not the cost. None of this matters while the door is shut; all of it matters the moment it opens.

    Area
    account
    Name
    にっかのにもつ · 日課の荷物 Nikka no Nimotsu · the load one day is allowed to carry
  • v0.197.0All levels means all levelsながいながめNagai Nagame2026-09-01

    The WaniKani explorer offered a tab reading All with the total beside it - two thousand nine hundred and twenty-two - and pressing it did nothing you could see. It put the member back on their own level, which was the level already showing, so the list did not change, the address kept the same single level in it, and the number on the tab described a view nothing in the app could open. There was no way to look across every level at all. It selects every level now and fetches the ones it does not already hold, a few at a time rather than all at once, because a level that is not cached goes out to WaniKani and sixty of those together is how an account gets rate limited. Results widen as each batch lands instead of waiting for the last. The address carries the whole selection, so the long view is a link somebody can be sent. The subtitle went with it: it read Select one level at a time, which was true of nothing - Sticky has always let a member gather several - and it was the last thing still saying one.

    Area
    study
    Name
    ながいながめ · 長い眺め Nagai Nagame · the long view, every level at once
  • v0.196.0The card is not a buttonとなりのとびらTonari no Tobira2026-09-01

    Every subject on an explorer sat inside one big control. The card was a button, and it holds buttons of its own - trouble, favourite, and the tick that chooses it - which is a control inside a control on four hundred and twenty-eight of them, one for every card on every list. What that costs is not theoretical. A screen reader announces the whole card as a single button and never reaches the favourite inside it, so the only way to mark a character as trouble is to see it. A keyboard arrives at the card and finds no way in. The glyph is the button now and the card is a plain container around it, which is the shape the saved lists and the history rows already used, so this is the odd one out being brought into line rather than a new idea. The controls at the glyph's foot are its neighbours instead of its children - the same corners, the same placement, nothing moved on screen - and each is reached, announced and pressed on its own. A whole card still answers a mouse click where it did before, because that is worth keeping and costs nothing once it is no longer the only way in.

    Area
    platform
    Name
    となりのとびら · 隣の扉 Tonari no Tobira · the door beside it, and it opens too
  • v0.195.0Practice is not a page under gradesてのひらのてじゅんTenohira no Tejun2026-09-01

    Writing practice lived at /grades/practice, which read as though the grades explorer owned it. It never did: it builds sheets from school grades, WaniKani levels, JLPT levels, either tagged list, or a set picked by hand on any surface. It is the thing you do to a collection rather than a page belonging to one of them, and filing it under one made the other four look like guests. It is a surface of its own now, at /practice, with the collection in the path - /practice/jlpt/5, /practice/grade/2, /practice/trouble - and how the sheet prints staying in the query, because that is how you are practising rather than what. A bare /practice opens the chooser, which is the point of it being top level: it is where you decide what to practise. A level on a list, or a source that does not exist, returns a 404 rather than a default sheet. The Back to grades button went with the move, since practice is no longer somewhere you arrive from grades, and the navigation now lists Practice beside the explorers rather than beneath one.

    Area
    platform
    Name
    てのひらのてじゅん · 手のひらの手順 Tenohira no Tejun · the steps that fit in a palm
  • v0.194.0One address, no shimsつたえるつちTsutaeru Tsuchi2026-09-01

    The grades explorer shipped its path move with a redirect from the old query-string address, on the assumption that links already sent had to keep working. They do not: the site has no users yet, and a compatibility layer for links nobody sent is a second code path to understand, test and eventually remove in exchange for nothing. The redirect is gone, the collection root simply opens on the first grade because that is where the navigation points, and there is exactly one address for a grade. The rule is now in AGENTS.md so it is not relearned: change the thing and update every caller, with two exceptions where data outlives code - persisted database values like the revenge enum member and the batchSize sentinel, and anything already written to production, which needs migrating rather than shimming.

    Area
    platform
    Name
    つたえるつち · 伝える土 Tsutaeru Tsuchi · the ground that carries word
  • v0.193.0The grade lives in the pathちずのちかみちChizu no Chikamichi2026-09-01

    John asked for explorer addresses that make sense, and the search half of that shipped already: every explorer reads q. This is the other half, starting with the grades. The grade moved out of the query and into the path - /grades/3 rather than /grades?grade=3 - because it says which collection is being looked at, which is what a link means to whoever receives it, and it is what a cache can key on. Searching and paging stay in the query, since they describe how a collection is being read rather than which one it is. Links already sent still work: the old address redirects to the new one carrying the search and page with it, and results built before the change land where they should. A segment that names no grade now returns a 404 rather than quietly rendering grade one, so a wrong link stops looking like a working one, and the writing-practice route beneath the same folder is untouched. The other two explorers follow this shape next.

    Area
    platform
    Name
    ちずのちかみち · 地図の近道 Chizu no Chikamichi · the shortcut the map shows
  • v0.192.0Articles, kept where the work isたよりのたなTayori no Tana2026-09-01

    Written notes on what changed and why were being handed over as links to pages hosted elsewhere, which put them outside the repository, outside admin and outside version control - three places they belong. Admin now has an Articles tab: an index of pieces newest first with their length, and a reading page for each at a width prose is comfortable at. An article is a component in the same folder rather than a markdown file, because the site has no markdown renderer and adding a dependency to read four internal notes is a dependency for nothing, while a component inherits the site's own type, spacing and colour and cannot drift from them. The prose vocabulary is fixed - a lead, headings, points, figures, a release row and a note - so an article cannot quietly invent its own styling, and the list is a single registry, because an article that is not in it does not exist. The first piece is the write-up of the search rebuild and the two corpora that shipped alongside it.

    Area
    platform
    Name
    たよりのたな · 便りの棚 Tayori no Tana · the shelf where the letters are kept
  • v0.191.0The glyph is text tooそこぢからのそらSokojikara no Sora2026-09-01

    Splitting the subject colours into a brand weight and a darker text weight fixed the pills, where a colour carries ten-pixel uppercase, and left the other half untouched: the character itself, drawn in the brand colour at twenty-four pixels and up. WCAG asks 3:1 there rather than 4.5, and radical cyan reached 2.41:1 on white - so the pill reading RADICAL was legible while the beside it was not. Radical is the only hue that moved, darkened by the least that clears the floor, and the dark theme keeps the original because on that ground it is the readable one at 7.06:1. Kanji and vocabulary were already above the line and are untouched, so the site still looks like itself. The pill ink moved a shade with it, since the tint it sits on is mixed from the brand colour and had darkened underneath it.

    Area
    platform
    Name
    そこぢからのそら · 底力の空 Sokojikara no Sora · the sky that holds its strength
  • v0.190.0One name for a searchせいとんのせんろSeiton no Senro2026-09-01

    Every explorer takes the same parameter for a search now. There were four names for the one idea - the grade explorer used q, and the WaniKani, JLPT and study explorers each had their own - and the shared search bar coped by writing all three legacy names on every submit and reading whichever one matched the surface it happened to be on. Nothing was broken by it. What it cost was guessability: the address for finding a character depended on which explorer you were standing in, so no link to a search could be worked out without reading the code first, and the search results had to hardcode a different query for each destination. It is q everywhere, which is what a reader expects and what one explorer already used. Links and bookmarks already sent to people keep working - the old three are still read - but nothing writes them any more, so they drain out of circulation instead of being carried forever. A test holds the line: no file may spell one of those parameters for itself again.

    Area
    platform
    Name
    せいとんのせんろ · 整頓の線路 Seiton no Senro · tidied track, all one gauge
  • v0.189.0Somewhere for a selection to goすすむすじSusumu Suji2026-09-01

    Choosing items on the study and WaniKani explorers could only ever be undone. Both run a bulk mode with shift-click ranges, and the panel counted what you had gathered and offered Select Visible, Clear and Done - nothing to actually do with the set. Meanwhile the grade and JLPT explorers, which choose through a different mechanism, had two destinations from the start: save it as a list, print it as a practice sheet. Those destinations belong to the act of choosing rather than to either mechanism, so they now live on the shared bulk panel and both explorers gain them at once. Practice takes only the kanji: a study queue is radicals and vocabulary too, and a practice sheet is squares to write kanji in - the list keeps everything chosen, and the sheet is withheld entirely when nothing chosen can go on one. Two smaller things had to move first. The save control took a selection object from one of the two mechanisms, which is what had kept it off the other; it takes characters now. And three surfaces worked out which member's page they were on by slicing the pathname by hand, which is one copy away from drifting - that is a shared hook.

    Area
    study
    Name
    すすむすじ · 進む筋 Susumu Suji · a path that leads somewhere
August 2026155 releases
  • v0.188.0Names the site keeps for itselfしるしのしかくShirushi no Shikaku2026-08-31

    A handful of words now cannot become a member's address. Signing up as Admin or Support would have produced /users/admin and /users/support, which read as the site speaking rather than as a member - and the first person to get one would have taken it by accident rather than by malice, since the address is built from whatever display name they arrived with. Reserved words are treated exactly like a name somebody already has: they take the numbered suffix, so nobody is refused an account and only the address moves. Their display name is untouched. Worth saying what this is not: it was written down as a route-shadowing risk and it never was one. Every member page lives under /users/ and there is no dynamic segment at the root, so /admin is the admin page whatever anyone calls themselves. The backlog note has been corrected rather than quietly deleted.

    Area
    account
    Name
    しるしのしかく · 印の資格 Shirushi no Shikaku · the right to wear the badge
  • v0.187.0Text you can actually readさやかないろSayaka na Iro2026-08-31

    Muted grey text across the app sat at 3.07 to one against a 4.5 floor - readable if your eyes are good and the room is bright, and not otherwise. It was on 751 nodes, and nothing about it looked wrong to whoever chose it, which is how contrast problems survive: faint reads as tasteful to the person picking it and as missing to the person who cannot see it. Every muted step below the readable one is raised to the lowest that clears the floor against both the white surface and the page background. The three subject colours had the same problem as pill labels - the radical pill worst at 2.21, half what a small uppercase label needs - but those colours are the brand, so they are untouched. A second, darker token was added for text on a tinted ground, and only pill labels use it; every glyph, border, fill and accent still reads the original. Faintness is kept where it carries meaning: a disabled pagination button, the off state of a toggle, the greyed corner a round is not using, the ghost completion that must not look typed, and the glyph drawn behind stroke order to trace over. Those are listed one by one with the reason, and a test holds the floor everywhere else.

    Area
    platform
    Name
    さやかないろ · さやかな色 Sayaka na Iro · a colour you can make out clearly
  • v0.186.0The campaign selector that actually switchesこたえるこころKotaeru Kokoro2026-08-31

    Picking the other reading campaign on the Check-ins panel did nothing. The select snapped back to the first campaign before anyone could see it move, so a member with two campaigns could only ever look at one of them. Choosing a campaign did set it, and did start a fetch for the new one - but the panel keeps showing the previous response while the next is in flight, and that stale response still named the campaign being left. A rule that let the server's answer overrule the member's put the selection straight back. The member's choice now wins whenever it names a campaign that exists; the server's answer still seeds the choice on arrival and still rescues it if the campaign it named has been deleted. Found by repairing the smoke suite rather than by anyone reporting it, which is the first thing that suite has caught since it started telling the truth.

    Area
    reading
    Name
    こたえるこころ · 答える心 Kotaeru Kokoro · the heart that answers back
  • v0.185.0Sentences that show the kanji at workけっしてけはいKesshite Kehai2026-08-31

    Readings and meanings say what a kanji is; a sentence says what it does, and the site's own examples come from WaniKani - shown to WaniKani members, absent everywhere else, including the public page a shared kanji link opens. Tatoeba publishes its corpus weekly as plain exports, which is the supported way to take it and the reason nothing here scrapes anything, and 232,731 Japanese sentences with an English translation are now ingested and indexed by the characters they contain. They arrive easiest first: each was scored at ingest by its length and the cost of its hardest character, so opens with 水をくれ! rather than with one of the other 1,644 sentences it appears in. Near-repeats that differ only in punctuation are folded together, since Tatoeba holds 水をくれ! and 水をくれ。 separately and both would otherwise spend a slot saying the same thing. Kana-only sentences are kept though nothing can reach them yet, because they are the ones a kana vocabulary word would need later. The corpus is CC BY 2.0 FR, so the credit sits under every set of examples.

    Area
    platform
    Name
    けっしてけはい · 決して気配 Kesshite Kehai · the sign that never fades
  • v0.184.0Results that stay on the screenくぎるくうかんKugiru Kukan2026-08-31

    A hundred results made the search page many screens tall, so scrolling through them carried the navigation, the search box and the source tabs off the top, left the remembered searches below a kilometre of rows, and ended a short answer in a blank field where the list used to be. The rows now scroll inside the card at a height the screen sets, so everything around them stays put: the box, the tabs and the counts hold their place while the results move under them. The recent searches sit outside that scroll rather than at the end of it - a way back you have to scroll a hundred results to reach is not a way back - and the paging observer watches the card instead of the window, so reaching the end of the rows still loads the next stretch.

    Area
    platform
    Name
    くぎるくうかん · 区切る空間 Kugiru Kukan · the space that is bounded
  • v0.183.0Search reads the dictionaryきづくきろくKizuku Kiroku2026-08-31

    Shipping KANJIDIC2 gave the kanji page 10,384 characters but left search reading the same three catalogues, so and - both inside the 1,500 most frequent characters in Japanese - still returned nothing at all. The dictionary is now a fourth source, and it fills gaps rather than adding a fourth copy of every common character: a query for already answers three times over, so the dictionary answers only where no catalogue does, and asking for the dictionary tab on its own is the exception that shows everything it holds. A tie between a catalogue and the dictionary goes to the catalogue, because alphabetical keys would otherwise push a reference row above the row carrying a member's own review state, and a dictionary hit links to the public kanji page since no explorer holds a character nobody teaches.

    Area
    platform
    Name
    きづくきろく · 気づく記録 Kizuku Kiroku · the record that notices
  • v0.182.0Renaming a list you savedかきかえるなまえKakikaeru Namae2026-08-31

    A saved list could be created and deleted and nothing in between, so a typo in "Week 1" could only be fixed by throwing the list away and picking every character again. Lists now rename in place: the name becomes a field on the card, Enter saves it, Escape abandons it, and the characters are never touched. Renaming is its own request rather than a save under a new name, which matters more than it sounds - saving under a name that already exists replaces that list's contents, so a rename expressed that way would quietly empty whichever list already held the name. Choosing a name another list has now says so and keeps what was typed, because colliding with "Week 1" is an ordinary thing to do rather than an error to swallow. Names are tidied the same way whether saved or renamed, so "Week 1" and "Week 1" stay one list instead of becoming two nobody can tell apart. The two built-in lists, Trouble and Favourites, offer neither rename nor delete: they fill themselves as you tag while you study, and untagging the last item empties one rather than removing it. Three controls no longer fit a card at the width the grid gives it, so the row wraps rather than breaking "Practise these" across two lines inside its own button, and the condensed view stopped running off the right edge of a phone.

    Area
    study
    Name
    かきかえるなまえ · 書き換える名前 Kakikaeru Namae · the name you rewrite
  • v0.181.0The kanji dictionaryおおきなおぼえがきOoki na Oboegaki2026-08-31

    The site knew kanji through three partial catalogues - what WaniKani teaches, the JLPT table, and the school grades - each assembled for its own purpose, so a character arrived with one meaning and a handful of readings, and some never arrived at all: the JLPT table holds neither nor . KANJIDIC2 is the reference those are footnotes to, and it now ships with the site: 10,384 characters with every English meaning, every on and kun reading, the readings only names use, stroke counts, grades, frequency ranks and the old JLPT levels. It is generated by pnpm kanji:build in the same spirit as the map and stroke data - regenerate, never hand-edit - and read the way the stroke data is read, one file of a few hundred kilobytes at a time rather than all 3.7MB. The public kanji page is the first surface to use it, so the 7,400 characters outside the school curriculum now open with meanings, readings and stroke counts instead of a drawing and nothing to read, and a shared link previews as the character and its meaning. KANJIDIC2 is CC BY-SA 4.0, so the credit sits on every page that shows the data and the generated files carry the licence, which is what share-alike asks for.

    Area
    platform
    Name
    おおきなおぼえがき · 大きな覚書 Ooki na Oboegaki · the large memorandum
  • v0.180.0The day a release actually shippedえらぶえのぐErabu Enogu2026-08-31

    An evening of releases claimed to have shipped on the 1st of September while it was still the 31st of August here. UTC rolls over seven hours before Vancouver does, and the release dates were written from UTC while every other date in this app - the Daily Challenge key, the study day - is the Vancouver day. The releases page grew a phantom September sitting above a still-running August, and thirty-two entries across two evenings were affected, some of them stamped hours into the future. All of them are corrected to the day they were really shipped on, respaced so each instant falls inside the day it claims. Two tests now hold the line: no release may claim to have shipped in the future, and each entry date must match the Vancouver day of its own timestamp. Nothing caught this before because a UTC date is a perfectly valid date - it was just the wrong one, and only a reader in the right timezone could see it. The admin releases list also collapses now, the way the public one already did: a hundred and seventy-seven entries each showing a full paragraph is a page nobody can scan, so the line identifies the release and the prose waits until it is asked for.

    Area
    platform
    Name
    えらぶえのぐ · 選ぶ絵の具 Erabu Enogu · choosing the right paint
  • v0.179.0A way in without an accountうけいれるうちUkeireru Uchi2026-08-31

    Every search result linked into one of the viewer's own explorer pages, which sit behind the sign-in wall, so a reader with no account got no link at all: rows of dead text on the page most likely to be reached by somebody who has never signed in. A single kanji already has a public page - it is the one a shared kanji link opens - so that is where an anonymous reader now goes, from both the results list and the suggestion dropdown. A word or a radical drawn as an image has no page of its own, so those still fall back to the results rather than to a link that would land nowhere, and a signed-in member is unaffected: their explorers carry their review state and remain the better destination.

    Area
    platform
    Name
    うけいれるうち · 受け入れる家 Ukeireru Uchi · the house that takes you in
  • v0.178.0Closed unless it says otherwiseいつものいりくちItsumo no Irikuchi2026-08-31

    An API route here was public unless somebody remembered to guard it, and two never did - which is how a stranger came to be able to read a member WaniKani progress by holding an account id. That is the wrong way round for a site whose whole content is members data, so being open is now a decision that has to be written down. A test walks every route file and requires each one to either check who is asking or appear in a list of public routes with the reason it is safe to leave open. A new route that forgets fails the build rather than production, and adding one to that list is a deliberate act a reviewer sees in the diff. The same test checks two other things the list can drift on: that a route listed as public still exists, and that any public route which touches the database or calls an external API is rate limited. It caught one straight away - the book cover proxy, which does two database reads and up to two lookups against openBD and Google Books per call, with nothing throttling it. Its responses cache hard, but a cache only helps a repeated ISBN and varying one walks straight past it, so it is now limited to 120 requests a minute per address. The cache posture everywhere else was already correct: the static catalogue routes cache publicly at the edge for a day or more, and no route behind a session declares a public cache, so nothing personal can be served from a shared one.

    Area
    account
    Name
    いつものいりくち · いつもの入口 Itsumo no Irikuchi · the usual way in
  • v0.177.0Search reads every meaningあらわれるあかりArawareru Akari2026-08-31

    All three catalogues searched every meaning a subject carries and then ranked the hit on its first one alone, so anything matched on another meaning scored zero and was removed by the filter that drops non-matches: the search found the row and then threw it away. Searching magnate returned nothing at all, though it is one of 's meanings, and home returned twenty-one results while missing . Ranking now takes the best score across every meaning the subject holds - including the Heisig keyword, which was searched but never scored - and the row shows the meaning that earned the match behind the one the subject leads with, so a result for magnate no longer reads only King. Against the live catalogues magnate goes from zero hits to two and home from twenty-one to forty-five, while sun still puts first.

    Area
    platform
    Name
    あらわれるあかり · 現れる灯り Arawareru Akari · the light that appears
  • v0.176.0Two doors that were never lockedわけるわなWakeru Wana2026-08-31

    Two per-account endpoints had no authentication of any kind. Both take an account id straight from the path, and both read that member encrypted WaniKani token: the JLPT route decrypts it and calls WaniKani with it, and the levels route reads a progress snapshot and writes a fresh one back. Verified against a running server with no cookies at all, a stranger holding an id received that member own kanji progress - subject ids, characters, meanings - and their level snapshot showing what they had learned. Both now answer 401 before touching the database. This was also an uncapped cost vector, which is how it was found: four database queries and an outbound WaniKani call per request, repeatable as fast as anyone cared to ask, on endpoints nothing was rate limiting. The explorers that call them only ever ask about the member whose page they are on, so requiring a session costs nothing that was working. Checked before the row is read rather than after, so a refused request costs one query rather than five.

    Area
    account
    Name
    わけるわな · 分ける罠 Wakeru Wana · the trap that tells them apart
  • v0.175.0One read where there were twoろんりのろじRonri no Roji2026-08-31

    Every study route checked whether the request was allowed by reading the account, then read the same row again for the member WaniKani token. Counts and queue are what the study page asks for on a timer and review is asked once per answer, so that second read was the single most repeated query in the product - and on the busiest paths it doubled the database work for no information. The columns an access decision needs are three small ones, so they are now selected as part of the read the route was making anyway and the round trip disappears. Five routes moved across: counts, queue, review, upcoming and lesson start. The access check itself got cheaper too: it used to query once for the invite path and again for the Google path when the first did not match, and now resolves who is asking from the request before touching the database at all, so an admin is answered without a query and everybody else costs exactly one. Permission and existence stay separate answers, because a permitted request for an account that has since been deleted is a 404 rather than a 401.

    Area
    platform
    Name
    ろんりのろじ · 論理の路地 Ronri no Roji · a lane laid out by reason
  • v0.174.0Let the database sleepれいせいなれいぞうこReisei na Reizouko2026-08-31

    The study counts and the study queue each re-asked the server every thirty seconds, which is far more often than either can change: review counts move on WaniKani SRS schedule, measured in hours, and the queue is mutated locally as a member answers rather than discovered by polling. The poll was never the mechanism, only a safety net for a session left open while something changed elsewhere - and it was an expensive one. A single open tab was 120 serverless invocations an hour and roughly 240 database queries, since every request checks access and then reads the account again; an evening across the family ran to thousands of both while discovering nothing. The part that actually shows up on the bill is Neon: its compute suspends after five minutes idle and is charged for the time it is awake, so a thirty-second poll meant the database never slept for as long as anybody had the study page open. Both surfaces now poll on one shared interval of five minutes, set just past that suspend threshold on purpose, so a closed laptop lets the database go to sleep. Revalidate-on-focus stays on, so returning to the tab still refreshes at once and the slower poll is never something a member waits on. A test pins the interval against the suspend window and fails if either surface goes back to a hand-typed number.

    Area
    platform
    Name
    れいせいなれいぞうこ · 冷静な冷蔵庫 Reisei na Reizouko · a refrigerator, keeping its cool
  • v0.173.0Permanent lists, kept apartるりのるいけいRuri no Ruikei2026-08-31

    Trouble and Favourites arrived on the lists page in the last release and sat in the same grid as the saved lists, which quietly misrepresented both. They are permanent - they fill themselves as a member tags while studying, and there is nothing to delete because untagging the last item empties a list rather than removing it - while a saved list is made and thrown away at will. Run together, the grid invited a member to look for a delete on a card that does not have one. Each kind now has its own section under a heading that says what it is: Always here, which cannot be deleted, and Saved by you, which can. The card markup was extracted rather than duplicated per section, so both kinds still render through one component. The saved section says only what the page can actually do today - renaming a list is not built yet, and the copy does not pretend otherwise.

    Area
    study
    Name
    るりのるいけい · 瑠璃の類型 Ruri no Ruikei · lapis, sorted by kind
  • v0.172.0Recent searches join the listりれきのりぼんRireki no Ribon2026-08-31

    The remembered searches shipped as a card of their own below the results, which read as a separate widget parked under the page rather than as part of what the reader was already scanning. They are now the last rows of the results list itself: the same card, the same row rhythm, the same lane the glyphs occupy - a history icon standing where a glyph would - introduced by a tinted band carrying the heading and the control that clears them, because a search you already ran is a way back rather than an answer and has to be told apart from the results above it at a glance. The end of the results moved inside the list too, so what closes the results sits with them instead of floating below the card. With no list to close out - no query yet, or a query that matched nothing - the rows carry the same card on their own.

    Area
    platform
    Name
    りれきのりぼん · 履歴のリボン Rireki no Ribon · a ribbon of history
  • v0.171.0Your two lists, on your lists pageらくだのらしんばんRakuda no Rashinban2026-08-31

    Trouble and Favourites are lists in every sense a member cares about - they are named, they hold subjects, they are what you practise from - but they are tag rows rather than saved lists, so the page whose whole job is showing a member their lists was the one place they never appeared. They could be reached only through a panel opened by a button somewhere else, which meant the two lists a member had actually built were the two they could not find. Both now sit at the top of the lists page, in the same card as every saved list, with a count and a preview of what is in them. What differs is what they cannot do: there is nothing to delete, because untagging the last item empties a list rather than removing it, so the card offers Open instead and the panel is where tagging still happens. Their practice sheet is addressed by source rather than by the characters on the card, so printing one takes the whole list instead of the two dozen the card had room to preview. Both are always shown, empty ones included, because no favourites yet is an answer to the question somebody came to this page with and a missing card is not. The subtitle stopped claiming every list here was built by hand, which two of them now are not.

    Area
    study
    Name
    らくだのらしんばん · 駱駝の羅針盤 Rakuda no Rashinban · the camel's compass
  • v0.170.0One sweep, one anchorよそいのよはくYosoi no Yohaku2026-08-31

    The study explorer had shift-click already, and had it wrong in the same way the WaniKani explorer did: the anchor a range was measured from was the item is position in the filtered list, which stops meaning anything the moment a filter changes or another page loads. Change a status chip after picking one item and the next shift-click swept a stretch the member never crossed. It anchors on the subject now, which survives both, and it uses the same range helper the other four surfaces use rather than a third copy of the arithmetic. That is all of them: the three explorers, study history and the tagged lists now sweep a range the same way, and a test names each surface so a sixth cannot quietly go without.

    Area
    study
    Name
    よそいのよはく · 装いの余白 Yosoi no Yohaku · room left in the arrangement
  • v0.169.0Choose a range on every listゆたかなゆびわYutaka na Yubiwa2026-08-31

    Choosing reached the explorers in 0.168.0 and stopped there, which left the two surfaces where a member has already gathered something deliberately - their study history, and the Trouble and Favourites lists - with no way to act on a set. Scanning what you got wrong last week is exactly the position from which you want those characters on a practice sheet, and the only route was to write them down. Both now offer the same Choose mode, in both densities, with shift taking everything between the last pick and this one. The work went into the shared row and card pair rather than into either surface, so neither had to learn anything: they pass the selection through and get the tick, the highlight and the sweep for free, and the next list built on that pair inherits all of it. The tick sits before history is own correct or wrong mark rather than replacing it, because whether you got it right is exactly what you are reading when you decide whether to pick that one. Where a surface cannot know which member it belongs to - the tagged lists open from the game lobby, from history, from either explorer - the practice offer is withheld rather than pointed at a guess.

    Area
    study
    Name
    ゆたかなゆびわ · 豊かな指輪 Yutaka na Yubiwa · a ring with plenty on it
  • v0.168.0Choose a range anywhereやまもりのやさいYamamori no Yasai2026-08-31

    Choosing a set of characters existed in the grade explorer and nowhere else, and the JLPT explorer had no way to select anything at all - so building a practice sheet or a saved list from a JLPT level meant picking the kanji out by hand somewhere else. The JLPT explorer now offers the same Choose mode, the same bar, and the same two destinations, and shift-click takes everything between the last card and this one. None of that is a second copy: the bar and its destinations moved into a shared component that the grade board now uses too, and the card draws the ring and the tick itself so a chosen card reads the same on every surface. The tick sits where the index number was, because every corner of the card is already spoken for by a pill, a level, a success rate or the trouble and favourite controls, and a tick laid over any of them hides something the member is using to choose. The WaniKani explorer keeps its own selection - it picks subject ids and carries bulk operations the others have no use for - but it no longer carries its own copy of the range maths, and that fixed a bug in passing: its anchor was the item position in the visible list, so changing a filter or loading another page moved every position underneath it and the next shift-click swept the wrong stretch. It anchors on the subject now, which survives both.

    Area
    study
    Name
    やまもりのやさい · 山盛りの野菜 Yamamori no Yasai · a heaped plate of vegetables
  • v0.167.0Every section on a phoneもっともくじMotto Mokuji2026-08-31

    A phone header showed four sections - Leaderboard, Study, Game, Admin - chosen by a hardcoded list of labels. Explore, Progress and Read were not in the markup at all, so on a phone the explorers, the progress pages and the reading pages could only be reached by somebody who already knew the menu button held them. Seven labels will not fit 393 pixels, so the row scrolls sideways now, reusing the same treatment the admin tab row has had for a while: no visible scrollbar, and a fade at the right edge that says there is more, which lifts once you reach the end. Removing the allowlist also removes seven literal labels that would have quietly stopped matching the day a section was renamed.

    Area
    platform
    Name
    もっともくじ · もっと目次 Motto Mokuji · more of the table of contents
  • v0.166.0Study opens from anywhereめざすめあてMezasu Meate2026-08-31

    Tapping Study in the header sometimes did nothing - the address changed and whatever explorer was open stayed on screen. It was only sometimes because from the study page itself the link looked fine, and it was worst on a phone, where the header is the only navigation there is. The cause sat one level below the tab that was fixed in 0.164.0: /study rewrites to dashboard=learn and the bare user page carries no parameter at all, and both resolve to the same tab, so the page could not tell go to study from landed here. The bare page has to reopen whichever tab the member last had, and that restore was overwriting an explicit request to open Study. The two are now told apart at the point the address is read, so a named tab always wins and an unnamed one still restores. The /study rewrite also matched nothing in the resolver and only worked by falling through to the default; it is handled explicitly now.

    Area
    platform
    Name
    めざすめあて · 目指す目当て Mezasu Meate · the mark you are aiming for
  • v0.165.0The strokes button stops floatingむりのないむぎMuri no nai Mugi2026-08-31

    In the grade explorer s list view the stroke-order button was positioned absolutely at the right-hand edge of each row and revealed on hover, so it came down on top of the JLPT pill it was meant to sit beside. The row had reserved padding for it, but the pills spread into that space anyway and the two ended up in the same place - reserving room was never going to be the fix, because a row s controls have to take part in the layout. It sits in the line now, as the last thing in the row s chip cluster, taking its own room rather than floating over whatever is underneath. The card view is unchanged: there the button has a free corner to occupy, and one permanent control on every card of a screenful is noise rather than help, so it stays where it was and still waits for hover.

    Area
    study
    Name
    むりのないむぎ · 無理のない麦 Muri no nai Mugi · barley that is not forced
  • v0.164.0The link goes where it saysみえるみちMieru Michi2026-08-31

    Clicking WaniKani in the header while on the JLPT explorer changed the address and nothing else - the JLPT explorer stayed on screen under a URL that said library-explorer. Each explorer has its own path but they all rewrite to the one user page with a dashboard parameter, so moving between them re-renders the tab component instead of remounting it, and the active tab was seeded from its prop by useState, which reads its argument once and ignores every later value. The tab now follows the address it is given, adjusted during render rather than in an effect so the old tab is never painted first and corrected a frame later. The bare user page is deliberately left out: that address names no tab, and following the prop there would overwrite the member s last open tab on every visit.

    Area
    platform
    Name
    みえるみち · 見える道 Mieru Michi · a path you can see
  • v0.163.0Rows that show the characterまっすぐなまちMassugu na Machi2026-08-31

    The JLPT and WaniKani explorers share one card component, and its list view was unusable: where each row s character should have been there was a pile of chips instead - the level pill sitting on the success rate sitting on the glyph. Both explorers hand the card an overlay written for the card shape, which places the level, the success rate and the trouble and favourite controls in the corners of a glyph box 128 pixels tall. A row s glyph box is 44 pixels square and has no corners to spare, so everything landed on top of everything else. The card now tells its overlays which shape they are being drawn into: in a row they lay themselves out in the line as ordinary chips and buttons, while the card keeps the corners it was designed around. Neither explorer changed - they pass the same overlay as before - and the trouble and favourite controls now work from the list view as well as the grid, which is what a member scanning a long level actually wants. Measured on both explorers afterwards: forty row glyph boxes each, none holding anything but the character.

    Area
    study
    Name
    まっすぐなまち · 真っ直ぐな街 Massugu na Machi · a street set straight
  • v0.162.0The searches you already ranほかんのほんだなHokan no Hondana2026-08-31

    Looking a kanji up is rarely a single act - you check , then 家事, then go back to - and retyping it each time was the whole friction. The search page now keeps the searches this browser has run and lists five of them under the results, each one a link back to those results and each with its own way to forget it. Twenty are remembered while five are shown, so forgetting one reveals the sixth rather than leaving a gap, and a single control clears the lot. The history lives on the device rather than the account, which means an anonymous visitor gets the same convenience as a member, and it is read through a store subscription rather than into state after mount, so the panel never flashes empty before it fills.

    Area
    platform
    Name
    ほかんのほんだな · 保管の本棚 Hokan no Hondana · the shelf that keeps things
  • v0.161.0The way out of the dropdownへいきなへさきHeiki na Hesaki2026-08-31

    The see all results row sat at the bottom left of the suggestion list in the same small type as a result, so the one control that leaves the dropdown read as an eleventh, oddly worded result. It is now centred across the full width, set in the same uppercase weight the rest of the site gives an action, and separated from the rows above by its own rule, with the highlighted state tinted rather than greyed so arrowing onto it looks like landing on a button rather than on another row.

    Area
    platform
    Name
    へいきなへさき · 平気な舳先 Heiki na Hesaki · the prow that holds steady
  • v0.160.0An empty search box opens searchふみだすふねFumidasu Fune2026-08-31

    Clicking the magnifier with nothing typed did nothing at all: the submit refused an empty query, so the only way to reach the search page from the header was to type something and then delete it once you arrived. Enter on an empty box was the same dead end. Empty now means take me to search, which is what pressing a search button with nothing to search plainly asks for, and the rule lives in one shared helper so the header, the phone sheet and the search page's own box all answer the same way.

    Area
    platform
    Name
    ふみだすふね · 踏み出す舟 Fumidasu Fune · the boat that sets out
  • v0.159.0Search pages its resultsひらくひきだしHiraku Hikidashi2026-08-31

    Search asked for every match at once and rendered all of it: the query "a" is 122 rows across the three catalogues, and the dropdown threw away all but ten of them after the request had already been paid for. Both surfaces now take a window. The API accepts a limit and an offset, sliced after ranking so the totals and the per-source counts still describe the whole answer; the dropdown starts at ten rows and grows a stretch at a time as the highlight or the scroll comes within reach of the end, up to forty, past which the answer is the results page; and the results page renders its first twenty, appending the next twenty as the reader nears the bottom or presses the button under the list. The dropdown widens its window from zero rather than stepping by offset, because it keeps one row per glyph and a duplicate can straddle any boundary, so a superset is the only window that cannot reorder rows under the highlight.

    Area
    platform
    Name
    ひらくひきだし · 開く引き出し Hiraku Hikidashi · the drawer that keeps opening
  • v0.158.0Shift-click takes the rowはこぶはこHakobu Hako2026-08-31

    Choosing characters was one click per character, so picking a row of five in the grade explorer took five clicks and picking forty took forty. Shift-click now takes everything between the last card and this one, the way it works in a file browser or a mail client, in either direction and from either end. The range only ever adds - a sweep that unpicked half of what it crossed would be impossible to predict from where it began - and the far end becomes the new anchor, so a selection can be walked outward a stretch at a time. A keyboard user gets it without a second set of handlers: activating a card with Enter or Space reports the modifiers held at the time, so Shift and Enter sweeps the same range. The logic sits in the shared selection hook rather than in the grade grid, so the next surface to offer choosing inherits it, and the hint appears in the selection bar only once something is picked, which is the first moment a range is possible.

    Area
    study
    Name
    はこぶはこ · 運ぶ箱 Hakobu Hako · the box that carries
  • v0.157.0A door for crawlersのこったのきNokotta Noki2026-08-31

    There was no robots.txt at all, so every crawler that found the site walked all of it - including each member's pages, which are built per request from that member's own data and render a refusal to anybody who is not them. The writing practice sheets made it acute: source, level, sheet size, mode and page all ride in the URL, which is what makes a sheet shareable and also means one school grade is thousands of distinct addresses to a bot following links. That one route took 3,200 serverless invocations in twelve hours, on a site with eight accounts, and the project's daily CPU went from about two minutes to nine and a half the week practice shipped. Member pages, admin, the API and the search results page are now closed; the home page, the release notes, the news pages and the per-character kanji pages stay open, because a family site nobody can find is not more private for it. The rules are tested against the route tree rather than a second copy of the list, so a member page added later is either covered or fails the build.

    Area
    platform
    Name
    のこったのき · 残った軒 Nokotta Noki · the eaves left standing
  • v0.156.0Readings that stay in the boxねばるねずみNebaru Nezumi2026-08-31

    In the grade explorer's list view, a kanji with many kun readings ran its readings straight out through the right-hand edge of its row. has eight of them and they crossed the card border, the JLPT pill and whatever sat beside it. The text had been asked to truncate, but a flex item's floor is the width of its own content, so the paragraph holding the readings simply sat as wide as they measured and the truncation inside it never had a narrower box to work against. Measured after the fix at 393, 650 and 1440 pixels: no row overflows its card by a single pixel, and the page has no horizontal scroll.

    Area
    study
    Name
    ねばるねずみ · 粘る鼠 Nebaru Nezumi · the mouse that holds its ground
  • v0.155.0Colour on screen, ink on paperぬりかえたぬのNurikaeta Nuno2026-08-31

    The writing practice page was built as a print preview and painted like one: white background, neutral greys, black text, from the source chips at the top to the squares at the bottom. It was the one page in the app that looked like a photocopy of the rest of it. Everything on screen now uses the site's own palette - the chips take the accent, the sheet sits on a surface card the way every other list does, the guide squares are drawn in the line colour and the tracing strokes in a pale accent, which is what a Japanese workbook prints them in anyway. None of it reaches paper: every colour on a printed element states its printed grey beside itself, the sheet's card drops its border and padding so the squares start at the printer's margin, and a rule under the whole region strips any background a later panel might bring with it. A test reads the sheet's own source and fails on a colour that says nothing about how it prints.

    Area
    study
    Name
    ぬりかえたぬの · 塗り替えた布 Nurikaeta Nuno · the cloth, dyed again
  • v0.154.0A rejection that means somethingにらむにおうNiramu Niou2026-08-31

    Turning an account down used to do almost nothing. A rejected member kept their session, opened their own pages, and answered every study, tag and game route as before - the only thing rejection changed was that they stopped appearing on the leaderboard, which is to say the admin's one sanction was to make somebody invisible to everyone except themselves. It now closes four doors at once: the owner check every /api/study and /api/custom-study route runs through, the viewer resolution that the user pages and the header are built on, the invite cookie (cleared on the next request rather than at some later sign-in), and signup, which will not hand back an account it has turned away or let the same email make a second one. A rejected member lands on a plain notice instead, with no reason given and no appeal form - a reason tells somebody acting in bad faith what to change, and a form hands them a channel. Being turned away stays separate from being merely pending: somebody still waiting keeps the run of the site, which is what the signup copy promises them, so the lock is written as "rejected" rather than "not approved". Accounts predating the column read as approved, because a lock that defaulted the other way would shut out the whole family on deploy.

    Area
    account
    Name
    にらむにおう · 睨む仁王 Niramu Niou · the glaring temple guardian
  • v0.153.0One search box, everywhereなめらかなながれNameraka na Nagare2026-08-31

    The header box and the search page's box were two different controls, and the page you were sent to was the one without autocomplete. Both now run the same combobox: suggestions while you type, the rest of the best match drawn in faint grey after the caret with Enter locking it in as if typed, a clear button once there is something to clear, and the magnifier itself as the submit. Arrowing through the suggestions rewrites the box without spending a single extra search, because what was typed and what is displayed are kept apart - the request still keys on the typed text while the box shows the highlighted row. At rest the header field is half its working width and grows when it is wanted, the results page keeps the site navigation instead of dropping it, and the arrow keys carry on past the last suggestion into the results themselves and back up into the box.

    Area
    platform
    Name
    なめらかなながれ · 滑らかな流れ Nameraka na Nagare · a smooth flow
  • v0.152.0Search understands romajiとどくとうだいTodoku Toudai2026-08-31

    The search placeholder promised "or romaji" and the code never kept the promise: readings are stored in kana, so typing watashi found nothing while わたし found plenty. A query is now folded into every spelling it could mean - the raw text, its hiragana, and its katakana, since JLPT stores on'yomi in katakana - and all three catalogues match and rank against the full set, scoring each hit by its best variant so folding can never demote a result the raw text already earned. The fold is a plain syllable table that accepts Hepburn and common kunrei spellings, doubled consonants, and the n-before-consonant rule, and it refuses to convert anything that is not entirely romaji, so English words never gain a phantom kana reading that outranks their real meaning match.

    Area
    platform
    Name
    とどくとうだい · 届く灯台 Todoku Toudai · the lighthouse whose light reaches
  • v0.151.0A menu that lists everythingてがるなてびきTegaru na Tebiki2026-08-31

    The account menu offered two admin links, "Admin" and "Manage users", while admin had nine pages - so seven of them existed only for somebody who already knew the header was there. It reads the same registry the admin header reads now, so adding an admin page adds it to the menu. The menu also stops shouting: each cluster used to be a bordered card under an uppercase heading, ACCOUNT and GO TO and SETTINGS and ADMIN and ACTIONS, so a dozen links read as five boxed lists. It is one flat column with a hairline where the subject changes, and it hangs off the button it belongs to rather than being pinned to a corner of the window, which is what made it read as floating loose of the header. Game gets its second row as well: six games that were reachable only by scrolling to the hub cards now sit in the header beside every other section's pages.

    Area
    platform
    Name
    てがるなてびき · 手軽な手引き Tegaru na Tebiki · a handbook made simple
  • v0.150.0Search that answers while you typeつかんだつきTsukanda Tsuki2026-08-31

    The header search box waited for Enter and a full page load before showing anything, which is a long way round for a learner who just wants to know where a kanji lives. Now the ten best hits appear under the field as you type, one row per glyph with its meaning, reading and source, ranked by the same scoring the results page uses. The dropdown reuses the existing search endpoint, whose per-query CDN caching means most keystrokes are answered at the edge without touching the database - prefixes are shared by everyone typing them. Arrow keys walk the rows and Enter opens the highlighted hit straight in your own explorer, falls through to the see-all footer, or submits the full search as before; a signed-out visitor gets the results page instead of links that would bounce off the sign-in wall. Japanese suggests from the first character, since one kanji is a real question, while Latin waits for two, since one letter matches half the catalogue.

    Area
    platform
    Name
    つかんだつき · 掴んだ月 Tsukanda Tsuki · the moon, grasped
  • v0.149.0Standalone JLPT studyちょっけつちしきChokketsu Chishiki2026-08-31

    The JLPT route refused the whole request without a WaniKani token, although the token was only ever used for the progress overlay - the kanji themselves come from a table WaniKani has no part in. So a member who had not connected could not read the JLPT data at all, only the part of it that was about them. The token is required where it is used and nowhere else now: the kanji stand on their own, and the overlay is simply empty without one.

    Area
    jlpt
    Name
    ちょっけつちしき · 直結知識 Chokketsu Chishiki · knowledge, directly connected
  • v0.148.0WaniKani-free game poolたんどくたびだちTandoku Tabidachi2026-08-31

    The games drew only from an account's own WaniKani assignments, so a player who had never connected had a pool of nothing: Match and Shiritori answered "Only 0 eligible items are available" while the lobby offered them and the welcome copy promised them by name. The subjects were never personal - they are the shared catalogue, which Daily Challenge has always played straight off - so assignments are treated as a filter rather than the source, and a player without a connection draws the catalogue up to level ten. Not the whole of it: sixty levels of vocabulary is a dictionary rather than a game. A connected player is untouched, since every existing account has assignments and the fallback never fires for them.

    Area
    games
    Name
    たんどくたびだち · 単独旅立ち Tandoku Tabidachi · setting out alone
  • v0.147.0Admin joins the headerそろえるそとがわSoroeru Sotogawa2026-08-31

    Admin was the last place still drawing its own navigation strip - a centred segmented control in a third row below the header, while every other section put its pages on the left of the header's second row. Its tabs move into that same slot and read the same way, so an admin page and a study page are recognisably the same site. The header's second row now accepts a section that supplies its own pages, which admin needs since its tabs come from their own registry rather than from navSections. They are links rather than buttons as well, restoring middle-click and open-in-new-tab that the router.push control had eaten. Three roadmap entries were also removed from the planned list: they described work already shipped under other names, so the page was advertising as planned things that were live.

    Area
    admin
    Name
    そろえるそとがわ · 揃える外側 Soroeru Sotogawa · aligning the outside
  • v0.146.0The third door, closedせきもんせいりSekimon Seiri2026-08-31

    /api/join created accounts and never asked whether signing up was allowed. It took a Google session and a WaniKani token and upserted an account straight into the database - no invite code, no signup mode, no approval - so the whole invite-only model could be walked around by anyone who could sign in with Google and hold any working WaniKani token. It had no caller anywhere in the app, having been replaced by the invite panel, and it is deleted rather than gated: a gate would have reopened it the moment open signup was switched on, and it would then have created accounts that skipped the onboarding wizard and the approval queue as well.

    Area
    account
    Name
    せきもんせいり · 関門整理 Sekimon Seiri · tidying the gateways
  • v0.145.0A header with room in itすえるすがたSueru Sugata2026-08-31

    Search was a 96px box that grew to 160px on focus, because three things were competing for the right-hand end of one row: the field, the release codename, and a menu button floating past both. The codename moves to the second row, which every section already drew, and search takes the space it left - 224px rising to 320px on a wide screen - sitting directly beside the menu rather than across the row from it. The second row is now always present, so the header is the same height on every page and the content below stops jumping as you navigate. On a phone search collapses to its icon and opens a full-width field under the header, the way WaniKani and most narrow headers do it; an always-present field there cost about 150px and silently pushed Admin off the end of a row that clips rather than wraps.

    Area
    platform
    Name
    すえるすがた · 据える姿 Sueru Sugata · the form set in place
  • v0.144.0The board stops leakingしまるしきりShimaru Shikiri2026-08-31

    /api/leaderboard took no session and applied no filter: it selected from Account directly and handed every member's nickname and real WaniKani username to anyone who asked, children included, while the home page had long since moved to the filtered loader. The route was serving nobody in the app and leaking to everybody. It now requires a session and reuses loadLeaderboardAccounts, so one place decides who may be seen - each member's own visibility choice plus the admin's approval - and a signed-in stranger with no account here sees what a stranger sees. The background sync trigger moved behind the same check; it was reachable anonymously, which let anyone on the internet make the server start refreshing accounts against the WaniKani API.

    Area
    account
    Name
    しまるしきり · 締まる仕切り Shimaru Shikiri · the partition that shuts
  • v0.143.0Translation refused at the rootさえぎるさかいSaegiru Sakai2026-08-31

    The previous release bet that declaring every Japanese run lang="ja" would stop Chrome reading the page as Japanese and offering to translate it into English. It did not: "always translate Japanese" is a sticky preference, and once it is set the page's own declarations do not get a vote. So the page refuses translation at the root again. What Chrome was doing is running every string through a Japanese-to-English model, English included, which re-interprets rather than passes through - "Writing practice" came back "First practice". The lang="ja" tagging stays because it is correct and because a screen reader needs it to pronounce a reading instead of spelling the kanji out as English. The cost is that Google Translate can no longer render the interface in another language; the answer to that is a locale layer serving translations we wrote, which the copy modules are already shaped for.

    Area
    platform
    Name
    さえぎるさかい · 遮る境 Saegiru Sakai · the boundary that blocks
  • v0.142.0Japanese declared as JapaneseことわることばKotowaru Kotoba2026-08-31

    Two releases of marking Japanese element by element kept missing places, because the cause was never addressed: the kanji were not declared as Japanese, so a browser counted them, decided the whole page was Japanese, and offered to translate it into English - pushing the English through a Japanese-to-English model on the way, which is how "Writing practice" came back as "First practice" and "Shellfish" as "shellfish". Every Japanese run now carries lang="ja" beside its refusal, which is what the spec asks for: an English document with declared exceptions. That leaves the interface translatable for somebody who needs it in another language, where a blanket refusal at the root would have taken that away, and it tells a screen reader to read a reading with Japanese pronunciation rather than spelling the kanji out as English.

    Area
    platform
    Name
    ことわることば · 断る言葉 Kotowaru Kotoba · words that decline
  • v0.141.0The rest of the translation wardけんごなけっかいKengo na Kekkai2026-08-31

    The previous release protected what a page draws on arrival and nothing else, so the stroke-order modal still showed "circle" where belonged in both its Gothic and Mincho previews, and the shared explorer card lost its protection the moment a list switched to rows. Those and the game's match prompt are covered now, along with the admin kanji tables. A second half to it: translation was also respacing compact chips, because a label built from several JSX children is several text nodes with the gaps between them up for grabs - "JLPT N5" came back as "JLPTN5", "APPR - SRS 4" as "APPR- SRS4", and every count as "( 157 )". Codes and counts are now single strings that refuse translation, while prose like "Showing 1-60 of 80 kanji" still reads in whatever language the reader wants. A source guard fails the build on any element that reaches for a Japanese typeface without refusing translation, which is what would have caught the modal.

    Area
    study
    Name
    けんごなけっかい · 堅固な結界 Kengo na Kekkai · a solid warding barrier
  • v0.140.0Japanese that survives translationくずれぬくらKuzurenu Kura2026-08-31

    Chrome's translate offer used to eat the site. On the grades explorer it replaced every kanji with its English meaning - became "one", became "right" - beside a card already printing that same meaning underneath, and it romanised the readings, so a page teaching kanji showed no kanji at all. Every Japanese element now carries both refusals, the HTML5 translate attribute and Google's notranslate class, while the English chrome around it stays translatable for anyone who needs it. The font class and the glyph sizing helper each carry the marker with them, since anything drawn in the Japanese face is Japanese, and a unit test keeps the raw font class out of the rest of the tree so the next glyph surface cannot take the styling and forget the protection. Release notes that quote Japanese inside an English sentence mark only the quote. Audited across sixteen pages: no unprotected Japanese left.

    Area
    study
    Name
    くずれぬくら · 崩れぬ蔵 Kuzurenu Kura · the storehouse that does not fall
  • v0.139.0Map handles that read in orderきれいなきょりKirei na Kyori2026-08-31

    Map handles are numbered west to east, so a round reads 1 2 3 4 across the map instead of the 3 2 4 1 the shuffle happened to deal - and pressing 1 now means the leftmost handle. They also stop overlapping: the old rule called two handles clear at 1.9 radii when circles of radius r touch at 2, so every pair it passed was already into its neighbour, and it had only two positions to try, which left a third crowded region back on top of the first. Handles now try a column of positions and take the first that is clear, vertical before sideways so the numbering survives. Across 48,000 handles on all three maps: no overlaps and none cropped at the frame.

    Area
    games
    Name
    きれいなきょり · 綺麗な距離 Kirei na Kyori · a clean distance
  • v0.138.0Pages that are sheets of paperかみのかずKami no Kazu2026-08-31

    A screen page is three sheets of paper now, so printing one comes out whole. It was twenty characters at every square size - a number about the screen, not about paper - and twenty medium squares is two and a half sheets, so the third sheet of every page came out 40% blank. The counts were measured by adding characters one at a time and watching where the paper broke: seventeen large, twenty-two medium, twenty-six small, each landing on a US Letter sheet boundary and taking the same three sheets on A4. Rows are numbered as well, by their place in the whole list rather than the page, so page two runs 23 to 44 and a sheet can be set as numbers twelve to twenty.

    Area
    study
    Name
    かみのかず · 紙の数 Kami no Kazu · the number of sheets
  • v0.137.0Print the whole sheetおおばんおてほんOoban Otehon2026-08-31

    Print asks how much: this page, or everything. It printed the twenty characters on screen and nothing else, so a grade of eighty was four separate print jobs - and because twenty characters is about two and a half sheets of paper, three of those four ended in a mostly-empty page. Everything drops the reading pages and lets the characters flow, which takes grade three from ten jobs and thirty sheets to one job and twenty-six. Lists too long for one document split into print runs rather than rendering 1,110 characters at once. Where the pager sits is no longer a question the sheet asks.

    Area
    study
    Name
    おおばんおてほん · 大判お手本 Ooban Otehon · large-format copybook
  • v0.136.0Grades and Maps in DataえまきえがくEmaki Egaku2026-08-31

    The Data tab covers school grades and map regions, not just WaniKani and JLPT. Both ship as files in the repo and reach the app through scripts somebody has to remember to run, so the panels answer the question those scripts leave open: does what shipped match what is loaded. Grades compares every grade file against the database row count; Maps shows each country's region count, geometry detail, regions with no shared border, and where the data came from.

    Area
    admin
    Name
    えまきえがく · 絵巻描く Emaki Egaku · painting the picture scroll
  • v0.135.0Admin that works on a phoneうねりうつわUneri Utsuwa2026-08-31

    The accounts list becomes labelled cards below tablet width, so level, due count, sync state and invite code stop hiding behind a sideways scroll on a 980px table. The pagination row wraps instead of pushing every admin panel wider than the screen, the tab strip fades at its cut edge rather than slicing a pill mid-word, and the Data tab asks its two questions as two short rows instead of four wrapping pills.

    Area
    admin
    Name
    うねりうつわ · うねり器 Uneri Utsuwa · a vessel with a swell to it
  • v0.134.0JLPT kanji without WaniKaniいちばんいのりIchiban Inori2026-08-30

    JLPT kanji are readable by any signed-in member now, connected to WaniKani or not. The table never had a WaniKani column; the query just happened to live inside an admin route, and the member-facing path went through an endpoint that decrypts a WaniKani token. The query is shared now and serves the readings themselves rather than the admin view's counts of them.

    Area
    jlpt
    Name
    いちばんいのり · 一番祈り Ichiban Inori · the first wish of the day
  • v0.133.0Saved listsあしあとあやとりAshiato Ayatori2026-08-30

    Choose characters on the grades explorer, give the set a name, and it keeps: Week 1, Week 2. A Lists page shows every set you have built with the characters it holds rather than a count, and each one goes straight to a practice sheet. The same idea as Trouble and Favourites, with a name instead of a flag.

    Area
    study
    Name
    あしあとあやとり · 足跡あやとり Ashiato Ayatori · footprints in a cat's cradle
  • v0.132.0Choose theseわかばわだちWakaba Wadachi2026-08-30

    Choosing items is a surface control now, sitting beside the grid and list toggle rather than being a feature of the practice page. Pick characters on the grades explorer and send them to a sheet; the chosen set travels in the link, so a sheet built by hand is shareable and printable before anything is saved. Destinations are offered to a chosen set rather than built into the picking.

    Area
    study
    Name
    わかばわだち · 若葉轍 Wakaba Wadachi · new leaves in the wheel ruts
  • v0.131.0Prints on the paper you haveろせんろくおんRosen Rokuon2026-08-30

    The sheet named Letter as its paper size, which overrode the printer: an A4 tray produced a Letter page scaled down inside it. It now pins only the orientation and lets the paper be whatever is loaded, so A4 and 8.5x11 both come out filling the page.

    Area
    study
    Name
    ろせんろくおん · 路線録音 Rosen Rokuon · a recording of the route
  • v0.130.0Squares sized for who is writingれんぞくれきしRenzoku Rekishi2026-08-30

    The writing sheet offers three square sizes. Large gives a child six big boxes to form characters in; Small gives an adult ten smaller ones and an extra tracing repetition, which is what copying at volume actually wants. Medium is the practice-book square the sheet always had.

    Area
    study
    Name
    れんぞくれきし · 連続歴史 Renzoku Rekishi · history, without a gap
  • v0.129.0A sheet that prints like a worksheetるろうるいせきRurou Ruiseki2026-08-30

    Printing a writing sheet now gives you a worksheet: Letter with proper margins, a Name and Date rule at the top, characters that never split across a page break, and none of the site's footer or version banner. The faint tracing characters print faintly instead of vanishing into the browser's ink saving.

    Area
    study
    Name
    るろうるいせき · 流浪累積 Rurou Ruiseki · what wandering piles up
  • v0.128.0Pagers where the page needs themりんどうりつどうRindou Ritsudou2026-08-30

    Paging is a shared component now, and where it sits is the surface's choice: top, bottom, both or none. The writing practice sheet takes both, because its only Next link used to be three thousand pixels below the fold, past three sheets of empty tracing squares.

    Area
    platform
    Name
    りんどうりつどう · 竜胆律動 Rindou Ritsudou · the gentian's rhythm
  • v0.127.0Capitals that actually ask somethingらいめいらせんRaimei Rasen2026-08-30

    The capitals round now skips the twenty-nine Japanese prefectures that share their capital's name, so it asks the eighteen worth knowing: 札幌市 is Hokkaido, 横浜市 is Kanagawa, 名古屋市 is Aichi. Japanese capitals are written in kanji now too, matching the tiles rather than sitting in romaji in a Japanese round.

    Area
    games
    Name
    らいめいらせん · 雷鳴螺旋 Raimei Rasen · thunderclap spiral
  • v0.126.0Name the capital, find the regionよながのよいYonaga no Yoi2026-08-30

    Map mode can ask by capital city: the prompt names the seat of government and the answer is the region that governs from it. Bismarck is North Dakota, Victoria is British Columbia. It works on all three countries, because every dataset already recorded a capital for every region.

    Area
    games
    Name
    よながのよい · 夜長の宵 Yonaga no Yoi · an evening in the long night
  • v0.125.0Every choice visible, and one rule for page widthゆきどけよりみちYukidoke Yorimichi2026-08-30

    Two small regions close together put their handles in the same few pixels, so a choice could be hidden behind another and never clicked - Prince Edward Island behind Nova Scotia. A handle now hangs below its region when the space above is taken. Scoreboards say which country a map run was played on, and member pages follow one width rule instead of three.

    Area
    games
    Name
    ゆきどけよりみち · 雪解け寄り道 Yukidoke Yorimichi · a detour through the thaw
  • v0.124.0Counts where you choose, preferences where your account isやなぎのゆうべYanagi no Yuube2026-08-30

    The writing sheet's second row of chips now carries counts, so picking a grade or level is no longer a choice between bare numbers. Theme and Japanese font move from the account menu onto the profile, which already held the name and the visibility - one home for how you want UmaKuma to be rather than two.

    Area
    platform
    Name
    やなぎのゆうべ · 柳の夕べ Yanagi no Yuube · an evening among willows
  • v0.123.0Real maps for the United States and CanadaもくれんものがたりMokuren Monogatari2026-08-30

    Map mode plays on all three countries. The American and Canadian outlines were hand-drawn placeholders - Ontario was five points - and are now built from the Census Bureau and Natural Earth by scripts that can be re-run when a boundary changes. Neighbours come from the map itself, so the wrong answers are the places next door.

    Area
    games
    Name
    もくれんものがたり · 木蓮物語 Mokuren Monogatari · a tale told under magnolias
  • v0.122.0The map board follows the questionめいろのめじるしMeiro no Mejirushi2026-08-30

    A Canadian round drew the Japanese coastline: the question knew its country and the board did not. The board now reads the country off the question, and the lobby offers only countries whose maps are real - the American and Canadian outlines are placeholder shapes, so they wait until that is fixed rather than being offered unplayable.

    Area
    games
    Name
    めいろのめじるし · 迷路の目印 Meiro no Mejirushi · a landmark in the maze
  • v0.121.0Choose the country you play the map onむらさきのむくげMurasaki no Mukuge2026-08-30

    Every country in one flat row was fine at three and cramped at seven; at thirty it would be a hedge of buttons between the reader and the map, with the one country this site is about lost inside it. Japan stands on its own at the front, always, and everywhere else is reached by naming a part of the world and then the country - two clicks to any of them, and never more than a handful on screen. Whatever country is open stays visible even when it is neither Japan nor in the part being browsed, and empty parts are dropped rather than shown with nothing under them.

    Area
    games
    Name
    むらさきのむくげ · 紫の木槿 Murasaki no Mukuge · a purple rose of Sharon
  • v0.120.0Map mode reaches the United States and CanadaみかづきみさきMikazuki Misaki2026-08-30

    Fifty-one states and thirteen provinces and territories join the forty-seven prefectures, as a bonus over the same board rather than a second game. Japan stays the default everywhere, and nothing new is stored: each question's target already carries its country in its id range, so runs recorded before this still read as Japan.

    Area
    games
    Name
    みかづきみさき · 三日月岬 Mikazuki Misaki · a crescent moon over the cape
  • v0.119.0The JLPT as it was before 2010まどのまぼろしMado no Maboroshi2026-08-30

    The explorer and the writing sheet both offer the four levels the test ran until 2009, for anyone who sat it then. Both schemes count down, so old Level 4 is the beginner paper and matches N5 rather than N4 - and N3 is absent, because it was added in 2010 to bridge old Levels 3 and 2. The explorer says so rather than inventing a mapping.

    Area
    study
    Name
    まどのまぼろし · 窓の幻 Mado no Maboroshi · a mirage at the window
  • v0.118.0Turning off the finished character clears its squareほおずきほそみちHoozuki Hosomichi2026-08-30

    The option reached the stroke-order sheet but not the tracing sheet, which kept printing the character solid in the first square - the one thing the option exists to remove. It is now an empty square to write in, like the rest of the row.

    Area
    study
    Name
    ほおずきほそみち · 鬼灯細道 Hoozuki Hosomichi · a lane of lantern plants
  • v0.117.0Grades reads like its sibling explorersへやのへきがHeya no Hekiga2026-08-30

    Filters and results shared one card on the grade explorer, divided by a hairline, while both other explorers keep them in separate cards. They are separate here too now, and the result count sits with the results rather than with the filters.

    Area
    study
    Name
    へやのへきが · 部屋の壁画 Heya no Hekiga · a mural in the room
  • v0.116.0Print a sheet from your own listsふぶきのふたばFubuki no Futaba2026-08-30

    Trouble and Favourites are now sources for a writing sheet, offered from the practice page itself rather than only where the tags were made. They stay quiet until the control row is hovered, and appear always on a touch screen where there is no hover to give.

    Area
    study
    Name
    ふぶきのふたば · 吹雪の二葉 Fubuki no Futaba · two leaves in a snowstorm
  • v0.115.0The practice sheet asks instead of assumingひとやすみひだまりHitoyasumi Hidamari2026-08-30

    Whether the finished character sits in the first column is now a checkbox rather than a decision made for you, and the readings can print beside each meaning. The chooser also closes when you pick what is already picked, or with a Done button at the end of the row.

    Area
    study
    Name
    ひとやすみひだまり · 一休み日だまり Hitoyasumi Hidamari · a rest in a patch of sun
  • v0.114.0Rows on every explorer, and headers that line upはつゆきひろばHatsuyuki Hiroba2026-08-30

    The WaniKani and JLPT explorers can be read as rows as well as cards, which the grade explorer already offered and they did not. The four pages behind the Explore tabs also shared no wrapper, so the sub-nav sat at three different heights and moving between tabs nudged the whole header; they now agree exactly.

    Area
    study
    Name
    はつゆきひろば · 初雪広場 Hatsuyuki Hiroba · first snow on the square
  • v0.113.0Change the sheet without leaving itのはらののぞみNohara no Nozomi2026-08-30

    Selecting the source you are already on opens a second row holding every value it offers: the eight school grades, sixty WaniKani levels or five JLPT levels. Changing sheet meant going back to the grade page and in again, which made a page you might print several of from harder to use than it needed to be.

    Area
    study
    Name
    のはらののぞみ · 野原の望み Nohara no Nozomi · a wish across the meadow
  • v0.112.0The stroke sheet reads like a practice bookねがいのねいろNegai no Neiro2026-08-30

    Every row is a full eight squares now: the finished character faintly at the start to work from, the strokes after it, and empty squares filling out the rest of the line. Each row is also titled with the character itself before its meaning.

    Area
    study
    Name
    ねがいのねいろ · 願いの音色 Negai no Neiro · the tone of a wish
  • v0.111.0The practice sheet keeps the sheet you choseぬけみちぬまNukemichi Numa2026-08-30

    Changing grade or turning the page dropped you back to the tracing sheet, because only the sheet toggle carried the choice. Every link on the page keeps it now.

    Area
    study
    Name
    ぬけみちぬま · 抜け道沼 Nukemichi Numa · a shortcut past the marsh
  • v0.110.0A stroke-order sheet, and honesty about phonesにじのにわNiji no Niwa2026-08-30

    Writing practice can now be printed as a stroke-order chart: one numbered square per stroke, the character built up to that point with the newest stroke picked out. A character of more than eight strokes runs onto a second row instead of shrinking the squares. On a phone the sheet now says plainly that it wants a bigger screen, rather than rendering squares too small to write inside.

    Area
    study
    Name
    にじのにわ · 虹の庭 Niji no Niwa · a garden under a rainbow
  • v0.109.0Updates leads with the release nameなのはななぎさNanohana Nagisa2026-08-30

    Each release now shows its codename on the row rather than only inside it, since that is the part anyone remembers. Months collapse, and an admin reaches the release admin page from here instead of finding their own way.

    Area
    platform
    Name
    なのはななぎさ · 菜の花渚 Nanohana Nagisa · rape blossoms along the shore
  • v0.108.0Any kanji, in detail, at its own addressとうげのともしびToge no Tomoshibi2026-08-30

    The stroke-order panel is now a shared component any surface can open, and every kanji has a public page you can send to someone. Selecting a card in the grade explorer opens it, which is how every other subject grid already behaved. The header carries the readings as well as the meaning, since a reader knows by なに before they know it by what, with the stroke count beside it and the credit centred at the foot.

    Area
    study
    Name
    とうげのともしび · 峠の灯 Toge no Tomoshibi · a light on the mountain pass
  • v0.107.0The welcome page accepts an invite sessionてがみてばこTegami Tebako2026-08-30

    An invited member may have no Google account at all, and the welcome page assumed one - sending them to the sign-in screen from a page they were entitled to open. It now accepts either kind of session and routes them to their own page.

    Area
    account
    Name
    てがみてばこ · 手紙手箱 Tegami Tebako · letters in a keepsake box
  • v0.106.0Existing members stay on the public leaderboardつゆつばめTsuyu Tsubame2026-08-30

    Accounts that predate the visibility setting now read as public, which is what they already were. Reading them as members-only had emptied the leaderboard for anyone who was not signed in. New accounts still start private, where no audience is being taken away.

    Area
    account
    Name
    つゆつばめ · 梅雨燕 Tsuyu Tsubame · swallows in the rainy season
  • v0.105.0Rows for the grade explorer, and quieter cardsちどりちゃやChidori Chaya2026-08-30

    The grade explorer can be read as rows as well as cards, which is how you scan a whole school year and the only way to see a kanji with ten kun readings in full. The stroke control no longer sits on every card: it appears when you hover, or always where there is no hover to give, which also fixes it covering the end of a long reading.

    Area
    study
    Name
    ちどりちゃや · 千鳥茶屋 Chidori Chaya · a teahouse where the plovers gather
  • v0.104.0One menu that knows what the header knowsたびたきびTabi Takibi2026-08-30

    The account menu kept its own copy of the navigation beside the header's, and the two had drifted apart. It now reads the same sections the header does, so nothing can go missing again. On a desktop it drops the navigation entirely, since the header already shows it, and keeps only your account, settings, admin and preferences. Settings moves out of the header into the menu, and Updates is reachable without hunting for the version number in the footer.

    Area
    platform
    Name
    たびたきび · 旅焚火 Tabi Takibi · a campfire on the road
  • v0.103.0Signing up, and choosing who can see youそうしゅんそうげんSoshun Sogen2026-08-30

    A newcomer now gets a welcome instead of a locked door: what UmaKuma is, that WaniKani is not required, a name, and a choice of who can see them, which they can change on their profile whenever they like. Leaderboards respect that choice. Who may join, what they start on and which questions are asked are all set from a new admin page, and it ships closed.

    Area
    account
    Name
    そうしゅんそうげん · 早春草原 Soshun Sogen · grassland in early spring
  • v0.102.0Signing in and out follows one pathせせらぎせみSeseragi Semi2026-08-30

    Asking for the login page while already signed in answered with a sign-out screen. It now takes you where you were headed, or to your own page. The sign-out tab links straight to the one screen that signs you out instead of bouncing through a redirect with no page of its own, and calls it Sign out, the wording used everywhere else.

    Area
    account
    Name
    せせらぎせみ · せせらぎ蝉 Seseragi Semi · cicadas over a babbling brook
  • v0.101.0The sign-in screen stops offering a door that goes nowhereすいさいすみれSuisai Sumire2026-08-30

    Back to leaderboard is hidden for viewers the home page would send straight back, so the button no longer returns you to the page you are already reading. The screen also sends a member who has an account but no WaniKani connection to their own page instead of bouncing them through the invite form.

    Area
    account
    Name
    すいさいすみれ · 水彩菫 Suisai Sumire · a violet in watercolour
  • v0.100.0Members without WaniKani can reach their own pagesしずけさしぐれShizukesa Shigure2026-08-30

    Page access matched on a WaniKani username, so an account that signed in with Google and never connected WaniKani was turned away from every page it owns - its own profile included - while its API calls kept working. Access now matches the permanent slug first and falls back to the username, so links shared earlier still resolve.

    Area
    account
    Name
    しずけさしぐれ · 静けさ時雨 Shizukesa Shigure · the quiet of a passing shower
  • v0.99.0A profile page for every memberさとやまさんぽSatoyama Sanpo2026-08-30

    Settings now opens on a profile: change the name other members see, record a JLPT certificate, and read a table of every game you have finished. WaniKani level stays read-only because WaniKani sets it, and an account with no WaniKani connection reads Not connected instead of showing a blank.

    Area
    account
    Name
    さとやまさんぽ · 里山散歩 Satoyama Sanpo · a walk through the foothills
  • v0.98.0Layout checks at phone, tablet and desktopこもれびこみちKomorebi Komichi2026-08-30

    Every page is now loaded at three widths and checked for anything hanging outside the screen, with the study menus opened and checked the same way. Its first run found the library upload card running off the side of a phone, which is now fixed.

    Area
    platform
    Name
    こもれびこみち · 木漏れ日小径 Komorebi Komichi · a lane of dappled sunlight
  • v0.97.0The study queue menu fits on a phone againけいこびよりKeiko Biyori2026-08-30

    The Reviews menu was anchored to its right edge to keep it on screen on a desktop, which pushed it off the left edge on a phone, where the panel is nearly as wide as the display. It now anchors left on small screens and flips right only where there is room.

    Area
    study
    Name
    けいこびより · 稽古日和 Keiko Biyori · a fine day to practise
  • v0.96.0An account has its own addressくものくらしKumo no Kurashi2026-08-30

    Every account gets a permanent slug and a display name it can change. Pages resolve by either the slug or the old WaniKani username, so links already shared keep working, and an account with no WaniKani connection is now reachable at all.

    Area
    account
    Name
    くものくらし · 雲の暮らし Kumo no Kurashi · life among clouds
  • v0.95.0Optional WaniKani connectionきんぎょきせつKingyo Kisetsu2026-08-30

    An account no longer requires WaniKani. The six connection fields are nullable, and every surface that used them now asks whether a connection exists instead of assuming one - WaniKani-derived boards leave unconnected accounts out rather than ranking them at level zero.

    Area
    account
    Name
    きんぎょきせつ · 金魚季節 Kingyo Kisetsu · goldfish season
  • v0.94.0Practice reachable from the navかぜのかきごおりKaze no Kakigoori2026-08-30

    Writing practice joins the Explore group instead of hiding behind the grades page, and the sheet keeps the site header on screen while dropping it for print. A nested page no longer lights up its parent's tab as well as its own.

    Area
    platform
    Name
    かぜのかきごおり · 風のかき氷 Kaze no Kakigoori · shaved ice on the breeze
  • v0.93.0Practice sheets for any listおりがみおはぎOrigami Ohagi2026-08-30

    Writing practice is no longer only for school grades: the same sheet prints a WaniKani level or a JLPT level, so the ladder you are actually climbing is the one you can practise writing.

    Area
    study
    Name
    おりがみおはぎ · 折り紙おはぎ Origami Ohagi · origami rice cake
  • v0.92.0Printable writing practiceえほんえんぴつEhon Enpitsu2026-08-30

    A printable tracing sheet for any school grade: each character once at full weight to copy, faint repeats to trace, then empty squares to write unaided, with the guide lines a Japanese workbook uses. Drawn from the real stroke paths rather than a greyed-out font.

    Area
    jlpt
    Name
    えほんえんぴつ · 絵本鉛筆 Ehon Enpitsu · picture-book pencil
  • v0.91.0Stroke order from searchうきようぐいすUkiyo Uguisu2026-08-30

    A kanji in the search results opens its stroke order without leaving the page. Radicals and vocabulary do not offer it, since neither is a single character with a stroke sequence.

    Area
    platform
    Name
    うきようぐいす · 浮世鶯 Ukiyo Uguisu · floating-world nightingale
  • v0.90.0Say what the readings actually areいちごいずみIchigo Izumi2026-08-30

    The grade page claimed its readings were the ones approved for that school year. They are the joyo table's, which is the official list for general use and is not split by year, so the copy now says so.

    Area
    jlpt
    Name
    いちごいずみ · 苺泉 Ichigo Izumi · strawberry spring
  • v0.89.0Official readings on every surfaceあおいあじさいAoi Ajisai2026-08-30

    The grade explorer was not the only place showing readings a character never takes on its own: 245 of the 2,211 JLPT kanji carried them too, so the JLPT explorer, the glyph viewer and search all did. One shared helper now prefers the joyo table wherever readings leave the database.

    Area
    jlpt
    Name
    あおいあじさい · 青い紫陽花 Aoi Ajisai · blue hydrangea
  • v0.88.0Refresh the catalogue exportわがしわらびもちWagashi Warabimochi2026-08-30

    The script that exports the WaniKani catalogue could not run at all - it imported a server-only module - so its committed snapshot had drifted to 3,930 of 9,324 subjects. Fixed and regenerated, and dropping the raw payload makes the complete export smaller than the stale one was.

    Area
    platform
    Name
    わがしわらびもち · 和菓子蕨餅 Wagashi Warabimochi · sweets and bracken mochi
  • v0.87.0Stroke order beyond the grades pageろじうらろくろRojiura Rokuro2026-08-30

    Stroke order moves into a shared button any surface can drop in, and the glyph viewer gains it for kanji. The data now covers every WaniKani kanji as well as the school grades - the characters WaniKani teaches past the joyo list were silently missing, and those are the ones a learner is least sure how to write.

    Area
    study
    Name
    ろじうらろくろ · 路地裏轆轤 Rojiura Rokuro · back-alley potter's wheel
  • v0.86.0Official readings from the joyo tableれいめいれんげReimei Renge2026-08-30

    Reported by John: the grade cards listed every reading a character has ever taken. They now use the readings from the joyo table, which is the cabinet-notified list for general use - so King correctly shows no kun reading, Sound files its in reading as on, and Life drops from twenty-one readings to ten. Both fonts are shown in the stroke view for comparison.

    Area
    jlpt
    Name
    れいめいれんげ · 黎明蓮華 Reimei Renge · dawn lotus
  • v0.85.0Compare the printed kanji with the strokesるりいろるすばんRuriiro Rusuban2026-08-30

    The stroke-order view shows the printed character beside the animation, so a child copying strokes has the real shape to compare against, with the grade, JLPT and WaniKani levels, frequency rank and readings underneath.

    Area
    jlpt
    Name
    るりいろるすばん · 瑠璃色留守番 Ruriiro Rusuban · lapis-blue homewatch
  • v0.84.0Animated stroke orderりんりんりんごRinrin Ringo2026-08-30

    Every kanji can be watched being written, one stroke at a time, with optional stroke numbers. Stroke data comes from KanjiVG under CC BY-SA, credited on every animation, and is rebuilt reproducibly from a pinned commit with pnpm strokes:build. Covers all 2,899 school-grade characters.

    Area
    jlpt
    Name
    りんりんりんご · りんりん林檎 Rinrin Ringo · chiming apple
  • v0.83.0Stop showing compound-only readingsらくがきらんぷRakugaki Ranpu2026-08-30

    Reported by John: the grade cards listed readings a character never has on its own. KANJIDIC hyphenates compound-only forms, and 31 of the 80 first-grade entries carried one, so the King card claimed a kun reading of -nou that only exists inside a compound. Those are filtered out of the display.

    Area
    jlpt
    Name
    らくがきらんぷ · 落書きランプ Rakugaki Ranpu · doodle lamp
  • v0.82.0Search keeps its place on a phoneよざくらよこちょうYozakura Yokochou2026-08-30

    The header search field cost about 150px on a phone and the mobile nav clips rather than wraps, so it had silently pushed the Admin link off the end of the row. On a phone it is now the icon alone, linking to the search page.

    Area
    platform
    Name
    よざくらよこちょう · 夜桜横丁 Yozakura Yokochou · night-blossom alley
  • v0.81.0Quiz yourself on grade readingsゆうやけゆかたYuuyake Yukata2026-08-30

    The grade grid hides its readings on request so the same page becomes a self-test: see the kanji, say the on and kun readings, select the card to check. Nothing is recorded, which is the point - it is the rehearsal, not the exam.

    Area
    jlpt
    Name
    ゆうやけゆかた · 夕焼け浴衣 Yuuyake Yukata · sunset yukata
  • v0.80.0Search results open where they liveやすらぎやきもちYasuragi Yakimochi2026-08-30

    A search result now opens the explorer that holds it with the search already applied. Signed-out visitors keep the results as a lookup rather than being offered links that would bounce off the sign-in wall.

    Area
    platform
    Name
    やすらぎやきもち · 安らぎ焼き餅 Yasuragi Yakimochi · restful grilled rice cake
  • v0.79.0Modals hold one heightももたろうもなかMomotarou Monaka2026-08-30

    Reported by John: modals grew and shrank with their contents. ModalShell now owns two heights, a content one for forms and a fixed one for lists, and a test fails if a modal hand-rolls its own again.

    Area
    platform
    Name
    ももたろうもなか · 桃太郎最中 Momotarou Monaka · Momotaro wafer cake
  • v0.78.0One level pill everywhereめぐみめぐりMegumi Meguri2026-08-30

    Reported by John: the level read as a pill in the lists and as faint borderless text on the study card and in the view modal. The in-glyph level and success rate are pills everywhere now.

    Area
    study
    Name
    めぐみめぐり · 恵み巡り Megumi Meguri · blessing pilgrimage
  • v0.77.0Search across every catalogueむかしむすびMukashi Musubi2026-08-30

    A search box in the header and a results page that asks WaniKani, JLPT and School Grades at once, ranked into one list with exact characters and meanings first. Filter to a single catalogue with the source pills.

    Area
    platform
    Name
    むかしむすび · 昔結び Mukashi Musubi · old-times knot
  • v0.76.0Public updates pageみちしおみやこMichishio Miyako2026-08-30

    Shipped releases are public at /releases, grouped by month and expandable for the detail. Four entries that described a fixed security weakness precisely carry a cleansed public wording; the admin timeline keeps the honest text and the planned work.

    Area
    platform
    Name
    みちしおみやこ · 満ち潮都 Michishio Miyako · high-tide capital
  • v0.75.0Grouped header navigationまねきまつりManeki Matsuri2026-08-30

    The header drops from eleven flat items wrapping onto two rows to eight groups on one. Explore holds the three explorers, Progress holds History and Stats, Read holds Read and News, and Settings holds Libraries.

    Area
    platform
    Name
    まねきまつり · 招き祭り Maneki Matsuri · beckoning festival
  • v0.74.0School Grade explorerほしぞらほうせきHoshizora Houseki2026-08-30

    Kanji by Japanese school year, with the on and kun readings approved for that grade rather than every reading the character has. Covers grades 1 to 6, secondary joyo and jinmeiyo, searchable and paged.

    Area
    jlpt
    Name
    ほしぞらほうせき · 星空宝石 Hoshizora Houseki · starry-sky jewel
  • v0.73.0One distractor rule for every mapへんろへいやHenro Heiya2026-08-30

    What makes a convincing wrong answer on a map - neighbours first, then region, then proximity - moves out of the Japan question builder so states and provinces use the same rule. Japan scores exactly as before.

    Area
    games
    Name
    へんろへいや · 遍路平野 Henro Heiya · pilgrim plain
  • v0.72.0Reserved map ids for all three countriesふうりんふくろうFuurin Fukurou2026-08-30

    US states and Canadian provinces get their own reserved subject-id bands beside the prefectures, so map rounds for any country can ride the existing run tables. Japan keeps the exact ids recorded runs already hold.

    Area
    games
    Name
    ふうりんふくろう · 風鈴梟 Fuurin Fukurou · wind-chime owl
  • v0.71.0Geo dataset under testひのでひまわりHinode Himawari2026-08-30

    The map data the capital, country and size games will read is now pinned by tests: region counts, unique ids, a capital and a positive population and area for all 111 divisions, and the comparison helpers.

    Area
    games
    Name
    ひのでひまわり · 日の出向日葵 Hinode Himawari · sunrise sunflower
  • v0.70.0Your Lists cards match the shared cardはるかぜはなみHarukaze Hanami2026-08-30

    Subject cards put the level in the top-right corner the way every other surface does, and the remove button moves to the bottom-right instead of squatting where the level belongs.

    Area
    study
    Name
    はるかぜはなみ · 春風花見 Harukaze Hanami · spring-breeze blossom viewing
  • v0.69.0Study queue as a listのどかのれんNodoka Noren2026-08-30

    The Study queue offers the same grid/list toggle the tagged lists and history already use, so a long queue can be scanned one line at a time. The choice is remembered per surface.

    Area
    study
    Name
    のどかのれん · 長閑暖簾 Nodoka Noren · tranquil shop curtain
  • v0.68.0Maps for Japan, the US and CanadaねぶたねりきりNebuta Nerikiri2026-08-30

    Map data now covers 47 Japanese prefectures, 51 US states and 13 Canadian provinces and territories, each with capital, largest city, population, area and regional metadata, rebuilt reproducibly by the map:build scripts.

    Area
    games
    Name
    ねぶたねりきり · ねぶた練り切り Nebuta Nerikiri · festival sweets
  • v0.67.0Version number opens the release timelineぬかづけぬいぐるみNukazuke Nuigurumi2026-08-30

    For an admin the footer version number and the header motto link straight to the release timeline. Everyone else still sees them as plain text, since the page is admin-only.

    Area
    admin
    Name
    ぬかづけぬいぐるみ · 糠漬けぬいぐるみ Nukazuke Nuigurumi · bran-pickle plushie
  • v0.66.0Release names show kana and kanjiにこにこにくじゃがNikoniko Nikujaga2026-08-30

    The release name prints its kana reading beside the kanji instead of hiding the kanji in a tooltip, so both scripts are readable at a glance.

    Area
    platform
    Name
    にこにこにくじゃが · にこにこ肉じゃが Nikoniko Nikujaga · smiling potato stew
  • v0.65.0Trouble and Favourites, visible from StudyなつまつりなるとNatsumatsuri Naruto2026-08-30

    The queue tag filter now shows as a chip you can clear, so a sticky Trouble filter no longer hides most of the due reviews without saying so, and the Trouble & favourites lists open from the Study page rather than only the game lobby, History and the JLPT explorer.

    Area
    study
    Name
    なつまつりなると · 夏祭り鳴門 Natsumatsuri Naruto · summer-festival whirlpools
  • v0.64.0Manage accounts redesignときめきとりいTokimeki Torii2026-08-30

    Each account row keeps one visible Open-as-user action and folds the rest into a compact overflow menu.

    Area
    admin
    Name
    ときめきとりい · ときめき鳥居 Tokimeki Torii · heart-flutter shrine gate
  • v0.63.0Timestamps and the Shelved tabてっぱんてばさきTeppan Tebasaki2026-08-30

    Releases carry their real commit instant - John's point: a timestamp beats sort cleverness - and backlogged or killed work stays visible on its own tab.

    Area
    admin
    Name
    てっぱんてばさき · 鉄板手羽先 Teppan Tebasaki · iron-plate chicken wings
  • v0.62.0Developer and Advanced modesつるつるつきみTsurutsuru Tsukimi2026-08-30

    Two global mode flags, toggled from the flags page; the footer wears DEV and ADV chips while they are on.

    Area
    platform
    Name
    つるつるつきみ · つるつる月見 Tsurutsuru Tsukimi · silky moon-viewing
  • v0.61.0Honest signed-out navigationちからちゃわんむしChikara Chawanmushi2026-08-30

    The join page sends resolved members to their own page, and the header only offers links the viewer can actually open.

    Area
    account
    Name
    ちからちゃわんむし · 力茶碗蒸し Chikara Chawanmushi · power egg custard
  • v0.60.0Admin API namespaceたからものたいやきTakaramono Taiyaki2026-08-30

    Administrative endpoints were consolidated under a single namespace.

    Area
    admin
    Name
    たからものたいやき · 宝物鯛焼き Takaramono Taiyaki · treasure taiyaki
  • v0.59.0Release codenamesそよかぜそうめんSoyokaze Soumen2026-08-30

    Every release walks the gojuon: a two-word Japanese name per version, worn in the header like a saying.

    Area
    platform
    Name
    そよかぜそうめん · そよ風素麺 Soyokaze Soumen · gentle-breeze noodles
  • v0.58.0Viewer identity fixせいけつなせんとうSeiketsu na Sentou2026-08-30

    Sign-in now matches you to your account by your linked email address.

    Area
    account
    Name
    せいけつなせんとう · 清潔な銭湯 Seiketsu na Sentou · spotless bathhouse
  • v0.57.0Content-based catalogue syncすずしいすいかSuzushii Suika2026-08-30

    The sync now skips rows whose extracted content is identical, even when WaniKani bumped the timestamp for fields we never store.

    Area
    platform
    Name
    すずしいすいか · 涼しい西瓜 Suzushii Suika · cool watermelon
  • v0.56.0Site version in the footerしのびしんかんせんShinobi Shinkansen2026-08-30

    Every release bumps the version; the footer shows it and the timeline lists each release's number.

    Area
    platform
    Name
    しのびしんかんせん · 忍び新幹線 Shinobi Shinkansen · stealth bullet train
  • v0.55.0Typecheck in the quality gateさわやかさしみSawayaka Sashimi2026-08-30

    quality:check now runs tsc; it caught a fresh test bug on its first local run.

    Area
    platform
    Name
    さわやかさしみ · 爽やか刺身 Sawayaka Sashimi · refreshing sashimi
  • v0.54.0Feature flagsこんがりころっけKongari Korokke2026-08-30

    Global switches toggled from an admin page, backed by a FeatureFlag table. First flag: the open-signup door, off.

    Area
    admin
    Name
    こんがりころっけ · こんがりコロッケ Kongari Korokke · golden-fried croquette
  • v0.53.0Compact game setupけんらんけしきKenran Keshiki2026-08-30

    One settings row and a smaller corners picker; the duplicate exit button is gone.

    Area
    games
    Name
    けんらんけしき · 絢爛景色 Kenran Keshiki · dazzling scenery
  • v0.52.0Kanji coverage mapくいしんぼうくじらKuishinbou Kujira2026-08-30

    Tracks which kanji WaniKani teaches, which it does not, and which it teaches that the JLPT table lacks.

    Area
    jlpt
    Name
    くいしんぼうくじら · 食いしん坊鯨 Kuishinbou Kujira · glutton whale
  • v0.51.0Last play and live roundsきんぴかきんかくじKinpika Kinkakuji2026-08-29

    Each hub card shows who is playing now, who played it last, and how you did.

    Area
    games
    Name
    きんぴかきんかくじ · 金ぴか金閣寺 Kinpika Kinkakuji · gleaming Golden Pavilion
  • v0.50.0JLPT old-to-N level mappingかみなりからあげKaminari Karaage2026-08-29

    Places a pre-2010 Level 1-4 certificate on the N1-N5 scale, inferring the system from the year.

    Area
    jlpt
    Name
    かみなりからあげ · 雷唐揚げ Kaminari Karaage · thunder fried chicken
  • v0.49.0Release timelineおどるおにぎりOdoru Onigiri2026-08-29

    This page: every shipped and planned feature with its date, admin only.

    Area
    admin
    Name
    おどるおにぎり · 踊るおにぎり Odoru Onigiri · dancing rice ball
  • v0.48.0Catalog-first study queueえにしのえまEnishi no Ema2026-08-29

    Read subject content locally: the study page went from 15.2s to under a second warm.

    Area
    study
    Name
    えにしのえま · 縁の絵馬 Enishi no Ema · votive plaque of destiny
  • v0.47.0Shared UI primitivesうたううめぼしUtau Umeboshi2026-08-29

    ModalShell, SubjectRows and SubjectCards replace hand-rolled copies.

    Area
    platform
    Name
    うたううめぼし · 歌う梅干し Utau Umeboshi · singing pickled plum
  • v0.46.0Schema drift gateいなずまいなりInazuma Inari2026-08-29

    Deploys stop when the production database is behind the Prisma schema.

    Area
    platform
    Name
    いなずまいなり · 稲妻稲荷 Inazuma Inari · lightning inari
  • v0.45.0Corners board and Practice listsあつあつあんみつAtsuatsu Anmitsu2026-08-29

    One fixed board for every tile game; Practice drills your tagged lists.

    Area
    games
    Name
    あつあつあんみつ · 熱々あんみつ Atsuatsu Anmitsu · piping-hot anmitsu
  • v0.44.0Map modeわくわくわしWakuwaku Washi2026-08-29

    The 47 prefectures, the first game that needs no WaniKani data at all.

    Area
    games
    Name
    わくわくわし · わくわく鷲 Wakuwaku Washi · excited eagle
  • v0.43.0Read directionろまんろうそくRoman Rousoku2026-08-29

    Answer from the reading, with named difficulty tiers.

    Area
    games
    Name
    ろまんろうそく · 浪漫蝋燭 Roman Rousoku · romantic candle
  • v0.42.0Quad and timed scoringれとろれっしゃRetoro Ressha2026-08-29

    Four-choice rounds with per-item timing and a larger clock.

    Area
    games
    Name
    れとろれっしゃ · レトロ列車 Retoro Ressha · retro train
  • v0.41.0Local database and WaniKani mockるんるんるりびたきRunrun Ruribitaki2026-08-28

    Develop offline against a seeded database and a stand-in API.

    Area
    platform
    Name
    るんるんるりびたき · るんるんルリビタキ Runrun Ruribitaki · cheerful bluetail bird
  • v0.40.0Games hubりりしいりゅうRirishii Ryuu2026-08-28

    Four games behind one hub: Daily, Time Attack, Shiritori and Practice.

    Area
    games
    Name
    りりしいりゅう · 凛々しい龍 Ririshii Ryuu · gallant dragon
  • v0.39.0Hard mode and UltraらくえんらーめんRakuen Ramen2026-08-26

    Harder distractors, all-item rounds and an endless Ultra run.

    Area
    games
    Name
    らくえんらーめん · 楽園ラーメン Rakuen Ramen · paradise ramen
  • v0.38.0Mobile status drilldownよあけようかいYoake Youkai2026-08-25

    Tap a status to see its stages; filtered totals stay honest.

    Area
    study
    Name
    よあけようかい · 夜明け妖怪 Yoake Youkai · daybreak yokai
  • v0.37.0Game leaderboardsゆきみゆずYukimi Yuzu2026-08-24

    Competitive scoreboards with level-aware scoring.

    Area
    games
    Name
    ゆきみゆず · 雪見柚子 Yukimi Yuzu · snow-viewing yuzu
  • v0.36.0Family challenge modeやさしいやたいYasashii Yatai2026-08-24

    The first game: a shared round the family competes on.

    Area
    games
    Name
    やさしいやたい · 優しい屋台 Yasashii Yatai · gentle food stall
  • v0.35.0Side-by-side reviewsもちもちもみじMochimochi Momiji2026-08-24

    Compare two items during a review session.

    Area
    study
    Name
    もちもちもみじ · もちもち紅葉 Mochimochi Momiji · springy autumn maple
  • v0.34.0Deferred review writesめでたいめろんぱんMedetai Melonpan2026-08-12

    Advance the queue immediately and persist history behind it.

    Area
    study
    Name
    めでたいめろんぱん · めでたいメロンパン Medetai Melonpan · auspicious melon bread
July 20263 releases
  • v0.33.0Server boundary hardeningむげんむぎちゃMugen Mugicha2026-07-31

    Hardened the boundary between server and client code.

    Area
    platform
    Name
    むげんむぎちゃ · 無限麦茶 Mugen Mugicha · infinite barley tea
  • v0.32.0Unified glyph statsみどりみそMidori Miso2026-07-26

    One status chip row shared by review and detail modals.

    Area
    study
    Name
    みどりみそ · 緑味噌 Midori Miso · green miso
  • v0.31.0Modal framing passまんまるまっちゃManmaru Matcha2026-07-05

    Consistent panels, background scroll locking and mobile spacing.

    Area
    platform
    Name
    まんまるまっちゃ · 真ん丸抹茶 Manmaru Matcha · perfectly round matcha
June 20264 releases
  • v0.30.0Peekable meaning cardほかほかほたるHokahoka Hotaru2026-06-27

    Reveal a meaning without leaving the review.

    Area
    study
    Name
    ほかほかほたる · ほかほか蛍 Hokahoka Hotaru · toasty firefly
  • v0.29.0JLPT word examplesへいわなへびHeiwa na Hebi2026-06-13

    Example vocabulary attached to each JLPT kanji.

    Area
    jlpt
    Name
    へいわなへび · 平和な蛇 Heiwa na Hebi · peaceful snake
  • v0.28.0Difficulty rankingふわふわふじFuwafuwa Fuji2026-06-12

    Rank reviews by measured ease so hard items surface first.

    Area
    study
    Name
    ふわふわふじ · ふわふわ富士 Fuwafuwa Fuji · fluffy Mount Fuji
  • v0.27.0Quick review modeひかるひつじHikaru Hitsuji2026-06-12

    A faster grading loop for large queues.

    Area
    study
    Name
    ひかるひつじ · 光る羊 Hikaru Hitsuji · glowing sheep
May 20266 releases
  • v0.26.0Reading challenge engineはいからはなびHaikara Hanabi2026-05-27

    Challenge-scoped rewards with capped weekly bonuses.

    Area
    reading
    Name
    はいからはなび · ハイカラ花火 Haikara Hanabi · fashionable fireworks
  • v0.25.0Reading campaignsのんびりのりまきNonbiri Norimaki2026-05-25

    Campaign manager, payout tuning and admin entry CRUD.

    Area
    reading
    Name
    のんびりのりまき · のんびり海苔巻き Nonbiri Norimaki · easygoing sushi roll
  • v0.24.0Reading check-insねむいねこNemui Neko2026-05-24

    A reading calendar with ISBN book covers and incremental check-ins.

    Area
    reading
    Name
    ねむいねこ · 眠い猫 Nemui Neko · sleepy cat
  • v0.23.0Filter counts and wait sortingぬくもりぬりかべNukumori Nurikabe2026-05-19

    Every filter chip carries its own count; sort by time waiting.

    Area
    study
    Name
    ぬくもりぬりかべ · ぬくもり塗壁 Nukumori Nurikabe · warm-hearted wall yokai
  • v0.22.0Telemetry ingestにぎやかにんじゃNigiyaka Ninja2026-05-03

    Route and client timing events collected for diagnosis.

    Area
    platform
    Name
    にぎやかにんじゃ · 賑やか忍者 Nigiyaka Ninja · boisterous ninja
  • v0.21.0Global user menuなごみなべNagomi Nabe2026-05-02

    Signed-in identity card available from every page.

    Area
    platform
    Name
    なごみなべ · 和み鍋 Nagomi Nabe · soothing hotpot
April 202620 releases
  • v0.20.0SRS transition feedbackとびきりとんかつTobikiri Tonkatsu2026-04-26

    Show the stage an answer moved an item to.

    Area
    study
    Name
    とびきりとんかつ Tobikiri Tonkatsu · exceptional pork cutlet
  • v0.19.0News kanji analysisてるてるてんぐTeruteru Tengu2026-04-26

    Per-article kanji overview with WaniKani, JLPT and grade caps.

    Area
    news
    Name
    てるてるてんぐ · てるてる天狗 Teruteru Tengu · shining tengu
  • v0.18.0News readerつよいつるTsuyoi Tsuru2026-04-25

    Paste a Japanese article URL and read it with lookup aids.

    Area
    news
    Name
    つよいつる · 強い鶴 Tsuyoi Tsuru · strong crane
  • v0.17.0Study history filtersちいさなちょうちんChiisana Chouchin2026-04-20

    SRS bucket filters and an in-modal item view.

    Area
    study
    Name
    ちいさなちょうちん · 小さな提灯 Chiisana Chouchin · little paper lantern
  • v0.16.0Level progress modesたのしいたぬきTanoshii Tanuki2026-04-18

    Item-spread drilldowns across the last five levels.

    Area
    study
    Name
    たのしいたぬき · 楽しい狸 Tanoshii Tanuki · merry tanuki
  • v0.15.0JLPT grade filtersそらいろそばSorairo Soba2026-04-18

    School-grade pills across JLPT and WaniKani explorer cards.

    Area
    jlpt
    Name
    そらいろそば · 空色蕎麦 Sorairo Soba · sky-blue soba
  • v0.14.0Bulk SRS resetせっかちなせんべいSekkachi na Senbei2026-04-17

    Multi-select reset with staged confirmations.

    Area
    study
    Name
    せっかちなせんべい · せっかちな煎餅 Sekkachi na Senbei · impatient rice cracker
  • v0.13.0Admin email allowlistすてきなすしSuteki na Sushi2026-04-17

    Admin access restricted to an explicit Google address list.

    Area
    admin
    Name
    すてきなすし · 素敵な寿司 Suteki na Sushi · splendid sushi
  • v0.12.0Invite-code sign-inしぶいしばShibui Shiba2026-04-17

    Invite codes for members who do not sign in with Google.

    Area
    account
    Name
    しぶいしば · 渋い柴 Shibui Shiba · effortlessly cool shiba dog
  • v0.11.0Blind review modeさくらざむらいSakura Samurai2026-04-13

    Hide metadata until reveal, then grade yourself.

    Area
    study
    Name
    さくらざむらい · 桜侍 Sakura Samurai · cherry-blossom samurai
  • v0.10.0Google sign-inこがねのこいKogane no Koi2026-04-12

    Direct Google OAuth flow for admin and linked members.

    Area
    account
    Name
    こがねのこい · 黄金の鯉 Kogane no Koi · golden koi
  • v0.9.0Local study historyけだかいけんだまKedakai Kendama2026-04-12

    Self-graded attempts recorded locally, independent of WaniKani.

    Area
    study
    Name
    けだかいけんだま · 気高いけん玉 Kedakai Kendama · noble kendama
  • v0.8.0Persistent study filtersくろいくまKuroi Kuma2026-04-11

    Level, type and locked filters that survive a reload.

    Area
    study
    Name
    くろいくま · 黒い熊 Kuroi Kuma · black bear
  • v0.7.0Review and lesson modesきらきらきつねKirakira Kitsune2026-04-10

    Two distinct flows rather than one queue doing both jobs.

    Area
    study
    Name
    きらきらきつね · きらきら狐 Kirakira Kitsune · sparkling fox
  • v0.6.0Full-screen study modalかがやくかっぱKagayaku Kappa2026-04-10

    One item at a time with WASD and arrow navigation.

    Area
    study
    Name
    かがやくかっぱ · 輝く河童 Kagayaku Kappa · gleaming kappa
  • v0.5.0Incremental WaniKani cachingおかしのおうこくOkashi no Oukoku2026-04-08

    Conditional requests and a 5-minute refresh window instead of full refetches.

    Area
    platform
    Name
    おかしのおうこく · お菓子の王国 Okashi no Oukoku · kingdom of sweets
  • v0.4.0Japanese font toggleえがおのえのしまEgao no Enoshima2026-04-04

    Global glyph font switch so kanji render the way the reader expects.

    Area
    platform
    Name
    えがおのえのしま · 笑顔の江ノ島 Egao no Enoshima · Enoshima of smiles
  • v0.3.0Leaderboard deltas and mobile cardsうれしいうまUreshii Uma2026-04-04

    24-hour movement per member and a card layout that survives a phone.

    Area
    platform
    Name
    うれしいうま · 嬉しい馬 Ureshii Uma · happy horse
  • v0.2.0WaniKani explorerいきないざかやIki na Izakaya2026-04-04

    Browse subjects with linked kanji relations, readings and radical meanings.

    Area
    study
    Name
    いきないざかや · 粋な居酒屋 Iki na Izakaya · stylish pub
  • v0.1.0Family leaderboardあまいあんこAmai Anko2026-04-03

    The original surface: ranked family standings behind an admin token.

    Area
    platform
    Name
    あまいあんこ · 甘いあんこ Amai Anko · sweet red-bean paste

Back to UmaKuma