The mnm project is building a legitimate replacement for email: a client (see below), a server, and a simple protocol between them.
Learn more at mnmnotmail.org.
09 March 2021 - the online demo is released. It has been tested on Chrome & Firefox.
03 January 2021 - v0.9 is released. It fixes a panic and a few flaws, but is otherwise identical to v0.8.
15 November 2020 - v0.8
is released for Windows 7+ & MacOS & Linux. Its UI has been tested on Chrome & Firefox.
New: Markdown reference panel, "Todo" tag on new threads, menu of filled-form tables,
and dozens of other enhancements and fixes.
20 April 2020 - v0.7
is released for Windows 7+ & MacOS & Linux. It has been tested with Chrome & Firefox.
New: slide deck layouts, replication to multiple PCs, simplified startup.
20 October 2019 -
v0.6 is released for Windows 7+ & MacOS & Linux. It has been tested with Chrome & Firefox.
New: search, message tags, file viewer, UI colors, logo, and more. Fixes many UI flaws.
29 May 2019 - v0.5 is released. It fixes a panic on Windows, but is otherwise identical to v0.4.
25 May 2019 -
v0.4 is released. It has been tested on Windows 7 & MacOS & Linux, with Firefox.
New: Windows support. Fixes a crash-recovery failure, and a TMTP handling error.
13 May 2019 -
v0.3 is released. It has been tested on Linux & MacOS, with Firefox.
New: tooltips on menu icons. Fixes a panic, and a handful of UI flaws.
07 May 2019 -
v0.2 is released. It has been tested on Linux & MacOS, with Firefox.
New: a tour with cartoons covering essential features.
19 April 2019 - v0.1 is released. It has been tested on Linux & MacOS, with Firefox.
Production releases: 1+ . 0 . 0+
Preview releases: pp . 1+ . pp (first & last from prior production release)
The second number is only used for previews. Most (hopefully all) preview features & changes appear in the following production release.
Requires Go 1.13.3+
a) go get github.com/networkimprov/mnm-hammer
b) cd $GOPATH/src/github.com/networkimprov/mnm-hammer
# project directory can be moved out of $GOPATH
c) ./webdeps.sh
# download browser modules
d) Edit kVersionDate in main.go
e) ./pkg.sh
# make release downloads for all platforms
Building for Windows requires patches to the Go source (which do not affect other programs):
go-winfsd.patch fixes #32088
go-winstat.patch fixes #9611
Apply patches with: cp go*.patch /.../go && (cd /.../go && git apply go*.patch)
An automated test sequence is defined in test-in.json.
It creates accounts Blue and Gold, which then exchange messages.
It yields occasional false positives due to loose synchronization between the two accounts.
After a test pass completes, the app provides http on port 8123 (unless --http is given):
./mnm-hammer --test server:port
# server:port is a TMTP service
To access a previous test pass:
(cd test-run/TPD/ && ../../mnm-hammer --http :8123)
# TPD is a directory name
If the TMTP site at server:port
is not configured for optional third party authentication,
the test sequence will produce an expect/got message from "local1 local" re "cs"
(which can be ignored).
The test sequence cannot run against a TMTP site that requires third party authentication.
Crash testing
a) ./mnm-hammer --test server:port --crash init
# make test directory
b) ./mnm-hammer --test server:port --crash dir:service:order:op[:sender:order]
# crash here in test sequence
c) ./mnm-hammer --test server:port --verify dir:service:order:count
# recover and verify result
./test-crash.sh server:port [ item_index ]
# collection of crash/verify runs in single directory
a) go test -c -covermode=count -coverpkg ./...
b) go build
c) ./mnm-hammer.test --test localhost:443 -test.coverprofile mnm-hammer.cov
. . . # this test pass directory is TPD below
d) go tool cover -html=test-run/TPD/mnm-hammer.cov -o web/coverage.html
e) (cd test-run/TPD/ && ../../mnm-hammer --http :8123)
f) Open a browser tab, go to localhost:8123/w/coverage.html
Ref: https://www.elastic.co/blog/code-coverage-for-your-golang-system-tests
To generate the demo files:
a) cp web/{gui.vue,service-demo.html}
b) cp web/docs{,-demo}.html
c) git apply web/*demo.patch
To recreate the web/...-demo.patch
files after changing the demo files:
a) git diff --no-index web/gui.vue web/service-demo.html > web/service-demo.patch
b) git diff --no-index web/docs.html web/docs-demo.html > web/docs-demo.patch
c) Edit the patches to use a/web/...-demo.html
as the origin path.
To create a JSON object for use in web/data-demo.js
from an mnm client instance:
a) Edit web/gui.vue
to insert <script src="/w/demodata.js"></script>
after all other <head>
scripts.
b) Quit and restart the app, then Shift-Reload the page at http://localhost:8123
.
c) Invoke http://localhost:8123/#demodata
and wait while it steps through each account.
d) Open the web console and copy the JSON result.
Copyright 2018, 2020 Liam Breck
Published at https://github.com/networkimprov/mnm-hammer
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/