Skip to content

Releases: thewoldaa/mise-kal

Mise-Kal 0.1.1

Choose a tag to compare

@thewoldaa thewoldaa released this 28 Sep 15:36

Documentation site with an interactive demo, and a fix for a crash class that
appeared in 22 places across the application.

Fixed

setState in a catch block with no mounted guard, in 22 places.

Every one of these awaits a network call and then writes state on failure. If
the widget is disposed while the request is in flight — the cashier closes the
payment sheet, the manager navigates away — the setState throws, turning a
recoverable failure into a crash at the till.

The success path in each already had if (!mounted) return;. The catch path did
not, which is why it went unnoticed: the happy path gets exercised by hand and
the failure path does not.

Found in payment_sheet, shift_sheet (both open and close), ticket_panel,
discount_dialog, move_table_dialog, split_bill_dialog, tables_page,
categories_page, item_dialog, modifiers_page, staff_page, and
printers_section.

The regression test does two things: proves the failure is real on a minimal
reproduction, and scans the source for the pattern so a 23rd occurrence fails
the suite instead of shipping. A widget test cannot reach every screen, but a
source scan can.

Added

Documentation site — https://thewoldaa.github.io/mise-kal/

A landing page, an interactive demo, and a hub for every document.
docs/build_site.py generates the pages from the markdown sources rather than
hand-maintaining a second copy, and rewrites links so one source serves both
GitHub and the site.

Interactive demo — https://thewoldaa.github.io/mise-kal/demo/

Reimplements the product's logic in the browser so the four rules can be watched
rather than taken on faith:

  • a forged total is recomputed server-side and discarded, with both numbers
    logged so the recomputation is visible
  • firing to the kitchen and settling a bill are refused while the network is
    down, because a total only the server computes cannot honestly be guessed at
  • adding to a bill is queued and drains in order when the connection returns
  • a kitchen ticket ages on its border and timer while status stays on the dots,
    so a late ticket full of cooking items still reads correctly

Its money arithmetic mirrors server/pb_hooks/lib_money.js including the order
of operations (discount, then service, then tax) and the tax-inclusive branch. A
demo that rounded differently from the server would quietly prove the wrong
thing.

Documentation

  • docs/testing.md — the seven suites, and why the harness patches upstream's
    tests at run time rather than editing them
  • docs/install-windows.md — building on Windows, and the Developer Mode
    prerequisite Flutter's own error message does not name

Changed

The repository is now a proper GitHub fork of
devShakib015/mise. It was standalone,
which is legal under MIT and kept the copyright notice, but it lost the visible
"forked from" link and the fork network graph — someone glancing at the page
could not tell where the work came from.

History already descended from upstream c56d1c3, so the change was a
fast-forward with no rewrite. All commits are intact and attributed.

The site's grid is Ember-tinted and its panels are glass. The grid is held at
5.5% and 9.5% opacity on purpose: a grid behind body text competes with it, and
the threshold where the eye stops reading the lines as structure is around 6% on
this background.

Verification

177 tests: 101 backend checks across six suites, 76 Dart tests. All passing on
Windows.

Notes

Mise-Kal is a fork of Mise by K M
Shahriar Hossain. The MIT license is retained unchanged and the upstream
copyright notice is preserved in LICENSE.

Mise-Kal 0.1.0

Choose a tag to compare

@thewoldaa thewoldaa released this 28 Sep 15:36

The first Mise-Kal release. Everything here is infrastructure and correctness —
no product features were added, because stabilising the existing system and
making it testable comes before building on top of it.

Added

Multi-agent worktree harness (.harness/)

An isolated git worktree, branch, reserved port block, and scratch directory per
agent, so several can work in parallel without touching each other's files.
Waves integrate in a controlled step: a trial merge detects conflicts before
anything lands on main, each branch merges as its own attributable commit, the
full suite runs on the merged result, and each branch is verified to be an
ancestor of main afterwards.

Indonesian localization infrastructure

Flutter gen-l10n with Indonesian as the template locale, English as the
fallback, 204 keys, and the connect and sign-in screens translated. The
generated Dart is committed so tests and CI need no codegen step.

Windows build script

installer/windows/build_windows.sh produces a runnable Windows build with
PocketBase staged in. It checks for Developer Mode first and explains the fix,
because Flutter's own failure for that prerequisite does not name it.

Documentation

CONTRIBUTING.md, SECURITY.md, AGENTS.md, docs/architecture.md,
.env.example, and task definitions covering the first three phases.

Fixed

  • The connection monitor could write to a disposed provider. The health poll
    runs every ten seconds and takes up to four to answer, so the provider can be
    disposed while a request is in flight — the app closing, or a tablet signing
    out. Writing state after that threw Cannot use the Ref of NotifierProvider after it has been disposed. Three paths needed guarding, not one.

  • Shell scripts were checked out with CRLF on Windows. Git's default
    core.autocrlf=true rewrites every .sh file, and bash then reads
    set -euo pipefail\r, fails to find a command named pipefail\r, and dies
    before the first line.

  • The vendored Inter font license was being reformatted by a
    .gitattributes rule that normalised a third-party legal notice.

Changed

Test suites now run on Windows. Three things in upstream's suites break under
concurrency, all confirmed by reading them: hardcoded ports 8091–8098, shared
literal /tmp scratch files (Git Bash does not honour TMPDIR for a literal
/tmp path), and pkill -f cleanup that matches command lines as strings and
therefore kills a sibling agent's server mid-suite. The harness patches a copy
at run time and leaves the originals untouched, so upstream stays mergeable.

Verification

  • 101 backend checks across six suites
  • 74 Dart tests, including 11 new tests for the offline queue's flush(), which
    had none despite being the feature the product leans on
  • All passing on Windows

Notes

Mise-Kal is a derivative of Mise,
forked at upstream commit c56d1c3. The MIT license is retained unchanged and
the upstream copyright notice is preserved in LICENSE.

This is pre-1.0. The roadmap continues with the Windows installer, the rest of
the Indonesian translation, and then the payment layer.