Skip to content

Releases: abons/wordpuzzle

Word Cross 1.6 — de tilde uit het woordenboek stond op het bord

Choose a tag to compare

@abons abons released this 16 Aug 07:02

Nog een aanwijzing die niet als een aanwijzing las, en dit keer stond er letterlijk een tilde.

  • De ~ uit het woordenboek stond gewoon op het bord. De omschrijvingen komen uit Wiktionary, en dat schrijft ~ op de plek waar het trefwoord hoort. Dat kwam ongewijzigd bij je terecht: BASEREN → "~ op: gronden, doen steunen", ACHTEREN → "van ~ aan de …". Het verraadde niets — het ís al een plaatsvervanger — maar het las als rommel in plaats van als een vraag. Diezelfde ~ staat nu als …, net als het antwoord dat wij zelf wegpoetsen. 161 aanwijzingen hadden er een; 139 daarvan lezen nu gewoon. De 22 andere bleken bij nader inzien niets te zeggen ("zich …: zich tot een gewoonte maken") en zijn eruit gehaald, volgens dezelfde regel die 1.5 introduceerde.

⚠️ Elke puzzel is opnieuw nieuw. De kandidatenlijst is de invoer van de generator, dus een veranderde lijst betekent dat elke seed een ander rooster oplevert — de dagpuzzel ook. Een partij die openstond wordt weggegooid in plaats van scheef teruggezet. En de eerste start na het bijwerken duurt weer even: het toestel bouwt zijn woordbestand één keer opnieuw op.

96 904 bytes, SHA-256 b1027b21e541d55a2ec5a8763d101d4baaa00cefc6b1d5002ba55c1c7214d7b7, dezelfde sleutel als 1.0–1.5 (2405A10D…D8CA). 170 tests groen.

Word Cross 1.5 — een aanwijzing die alleen nog uit stopwoorden bestond

Choose a tag to compare

@abons abons released this 16 Aug 06:08

Eén reparatie, en een duim vond hem.

  • Een aanwijzing die alleen nog uit stopwoorden bestond. De omschrijving die je bij een woord krijgt is de woordenboekdefinitie met het antwoord eruit gepoetst. Bij BEREIDER was dat het enige woord dat iets zei: wat overbleef was "iemand die iets …". Niet op te lossen, en het leest als een afgekapte zin. 602 van de 30.008 kandidaten hadden die vorm — ATLETE → "vrouwelijke …", AFGHAAN → "een inwoner van …", BERKEN → "gemaakt van …". Een gemaskeerde aanwijzing moet nu twee inhoudswoorden overhouden, anders komt het woord niet meer in een puzzel.

⚠️ Elke puzzel is nieuw. De kandidatenlijst is de invoer van de generator, dus een kortere lijst betekent dat elke seed een ander rooster oplevert — de dagpuzzel ook. Een partij die openstond wordt weggegooid in plaats van scheef teruggezet. En de eerste start na het bijwerken duurt weer even: het toestel bouwt zijn woordbestand één keer opnieuw op.

96 873 bytes, SHA-256 85cb1e7737fcbefef9947f745ca3d8c591c8ca0b2d70e980b0b45ab46c6c6c47, dezelfde sleutel als 1.0–1.4 (2405A10D…D8CA). 167 tests groen.

Word Cross 1.4 — een begrensd bord, en foutmeldingen in onze eigen woorden

Choose a tag to compare

@abons abons released this 15 Aug 12:09

Twee dingen die sinds 1.3 klaarstonden en nog geen speler bereikten.

  • De dagranglijst haalt hooguit 200 rijen op. Het bord is openbaar, dus hoeveel rijen een dag telt is niet aan ons; de snede wordt server-side gemaakt (orderBy="seconds" + limitToFirst=200, met .indexOn in de rules), zodat de bytes de database niet verlaten. Eén opgeblazen dag haalt de dialoog niet meer onderuit.
  • Foutmeldingen zeggen nu wat de app bedoelt. Bij een mislukte inzending of een onbereikbaar bord stond de uitzonderingstekst van het platform op het scherm: Engels, intern, met de Firebase-host erin. Die gaat naar logcat; de speler leest "Controleer je verbinding".

95 431 bytes, SHA-256 a660ef7e966e860cb01497d6003132782a42dbf0a51741280c6ce7917df5b968, dezelfde sleutel als 1.0–1.3 (2405A10D…D8CA). 125 tests groen.

Word Cross 1.3 — three edges of the coin economy, closed

Choose a tag to compare

@abons abons released this 15 Aug 05:41

Word Cross 1.3 — three edges of the coin economy, closed.

1.2 gave help a price and the daily a leaderboard. This release repairs what that opened up, at the
three places where it could bite a player.

Never blind on an empty wallet

Since 1.2 every kind of help cost coins, and Controleer — the button that marks what is wrong —
cost one too. On zero coins that left you playing with no signal at all: no red, no green, no
confirmation. A fresh install started at zero, so that was every first puzzle of every new player.

  • You now start with 5 coins. Not a buffer; room to try both hints once while you find out what
    they do.
  • On zero coins, Controleer is free — and pays nothing. It still marks, it still confirms, and
    its mistakes still count on the leaderboard; only the payout is off. That "pays nothing" is the
    whole point: a free press that earned would make zero the best balance in the game. The way up is
    a solved puzzle, and nothing else. Hints stay locked at zero, which is what a balance is for.

A name that is already on today's board

Submitting a score under a name someone else used that day looked like it had worked, and the board
came back with that stranger's row highlighted as yours. Two things met: the board refuses to
overwrite an existing entry, and that refusal was read as "that is you" without ever comparing the
numbers. Any name without letters or digits also becomes ANON, so the second player of the day who
left the field empty walked straight into it.

Now the app reads the entry back and compares your actual time, mistakes and hints. If it is not
yours, it says the name is taken and asks for another one — and your name is only remembered once it
really lands.

The clock stopped being a coin machine

The daily puzzle is picked by the date, and the date comes from your phone. Setting it forward handed
out a fresh daily, a fresh payout and a longer streak, over and over.

A day below the highest day this install has ever seen now still plays, but it does not count: no
coins, no streak, and no place on that day's board. Travelling west sets the day back one legitimately,
so the puzzle is never refused — at most you miss a single payout. Moving the date forward is still
allowed, because offline it cannot be told apart from someone who was away for a week; what it costs
you is every payout until the real calendar gets there.

Unchanged

No purchases, no ads, no tracking, no billing code in this APK. Still pure Kotlin on the Android
framework only — no AppCompat, no Compose, no third-party library, the whole interface drawn in code.
93 KB, Android 5.0+.

Word Cross 1.2 — a daily leaderboard, and help has a price

Choose a tag to compare

@abons abons released this 14 Aug 18:04

Word Cross 1.2 — the daily puzzle now has a leaderboard, and help has a price.

A daily leaderboard (the reason for this release)

Solve the daily and you can put a name on that day's board. It ranks on corrected time: your
clock, plus 30 seconds for every wrong letter Controleer found and 60 for every hint you took.
So help is a trade rather than a disqualification — one hint still beats being five minutes slower.

Sending is a choice. Solving alone never uploads anything; only the submit dialog does, and what it
sends is the name you type plus those three numbers. Type whatever you like — it is a label on a
public list, not an account. The board stores the raw numbers and not the score, so the ranking is
worked out from what everyone actually did.

Hints cost coins now, and the daily has them

Coins used to buy one thing and hints were free. Both changed, and they changed together:

  • Help has a price. 1 coin to check, 1 for a single letter, 3 for a whole word. Solving still
    pays — 3 for the daily, 1 for a free puzzle, 1 more if you took no hint — and 30 still unlocks the
    extra-large puzzle (about 36 words across 19 columns) for good.
  • Controleer pays itself back. It costs 1 and returns 1 for every word it newly confirms, so
    a player who is right checks for free and a player who is guessing pays for the guess. Pressing it
    twice earns nothing, and neither does a word a hint filled in.
  • Hints work in the daily too, where they used to be refused outright. They cost coins like
    anywhere else and cost rank on the board — which is what keeps paid help visible instead of
    invisible.
  • A broken day streak can be bought back for 10 coins, once the gap is a single day.

There is still nothing to buy with money: no purchases, no ads, no tracking, and no billing code in
this APK at all. Coins come out of play only.

The interface got quieter

  • The top bar is three buttons instead of five. The gear is gone: + opens a small menu where
    you pick the size and start a new puzzle, and the sizes you have not unlocked show their price
    instead of a padlock — the price was always the lock.
  • Your coin balance sits next to the date as plain status, not as a button competing with the
    buttons.
  • The keys are keys again. Bigger, rounded, opaque, with a light-to-dark face and a visible press.
    They used to be 90% translucent, which meant identical keys rendered in different shades depending
    on which backdrop sat behind them. What floats on the picture — the three top-bar buttons — is a
    round dark wash instead, so the split between "on the scene" and "part of the keyboard" is visible.
  • The small pictures are drawn, not typed. Several of the emoji this app relied on come out wrong
    in the system font — the calendar ships with "July 17" baked into its artwork, and the coin renders
    as a bank building — so the calendar, the chart, the coin and the rest are now drawn in code like
    everything else here.

Also fixed

  • Switching between the daily and free play no longer costs you the letters you had typed.
  • The daily button no longer reloads the puzzle that is already on screen.

Under the hood

The leaderboard talks to its database over plain HTTPS, with no SDK and no runtime dependency —
still pure Kotlin on the Android framework only: no AppCompat, no Compose, no Material, no
third-party library, and the whole interface drawn in code. 92 KB, Android 5.0+.

Word Cross 1.1 — typing that carries on

Choose a tag to compare

@abons abons released this 12 Aug 21:14

Word Cross 1.1 — the update that is mostly about typing.

Filling it in got better (the reason for this release)

  • Checked letters stay put. After Controleer, every correct letter is locked and turns a
    darker green; typing on it does nothing, so a solved word cannot be broken by accident.
  • The cursor carries on. Fill the last cell of a word and it moves to the next open word by
    itself, instead of waiting to be tapped somewhere else.
  • Arrows on the clue bar step from word to word, skipping the ones that are already full.

Your grid survives closing the app. The daily and free play each keep their own board, including
which letters were locked, so leaving the app half-way is no longer the same as giving up.

Coins, and the one thing they buy

Solving puzzles pays: 3 for the daily, 1 for a free puzzle, plus 1 more when you used no hint. At 30
coins the extra-large puzzle unlocks for good — about 36 words across 19 columns, half again as
big as groot. Hints stay free and there is nothing to buy: no purchases, no ads, no tracking, and
no billing code in this APK at all. What a coin buys is content, never an advantage.

Also fixed

  • The green of a solved letter was hard to read on the drawn backdrops; it is now #0D5424, measured
    at a 4.90:1 contrast ratio against the cell.
  • When something goes wrong the dialog says what happened instead of showing a platform exception.

Under the hood

Built against Android 15 (targetSdk 35), which makes the app draw edge to edge — the top bar now
places itself clear of a camera cutout, verified by measurement on an Android 15 screen rather than
by eye. Still pure Kotlin on the Android framework: no AppCompat, no Compose, no Material, no
third-party runtime library, and the whole interface is drawn in code. 79 KB.

Word Cross 1.0 — a Dutch crossword whose clues are definitions

Choose a tag to compare

@abons abons released this 29 Jul 09:34

The first release of Word Cross — a generated interlocking crossword in Dutch, where every clue is
the answer's own dictionary definition with the word masked out.

What's in it

  • A daily puzzle, derived from the date, so it is the same grid for everyone that day and
    survives a restart unchanged.
  • Free play in three sizes — klein (±8 words), normaal (±16), groot (±24). The daily ignores the
    choice on purpose.
  • Controleer marks wrong letters red; Hint reveals a single letter or the whole word, and
    solving without hints is counted separately.
  • Statistics and streaks: solved, solved without hints, dailies, current and best day streak.
  • Eight drawn backdrops — mountains, ocean, forest, desert, city, night, meadow, autumn — made
    from canvas shapes only, so the APK contains no image files at all.
  • Screen-reader support. The grid is one hand-drawn canvas, published as a virtual view tree:
    every open cell is a focusable node that says where it is, what is in it and which clues run
    through it. Walked through with TalkBack by ear.
  • Offline after the first start. The Dutch word list and its definitions are downloaded once and
    cached; after that the app needs no network.

Under the hood

Pure Kotlin on the Android framework — no AppCompat, Compose, Material or any third-party runtime
library, and the entire UI is built in code. That is where the 66 KB comes from. The 4.3 MB
definitions file is streamed straight into a compact per-install cache, which brings a cold start
down to about 1.5 s.

Permissions

INTERNET and ACCESS_NETWORK_STATE, both for the one-time download of the word list. No ads, no
analytics, no accounts; puzzles, statistics and streaks stay on the device.


com.hrbons.wordpuzzle_1.apk — 67,127 bytes, versionCode 1, Android 5.0+.
SHA-256 92fa281ba45ba3be1f05d3a0bcd54aba70a0879dc90cbed91c99d2ff11145c84