{"id":15147080,"url":"https://github.com/networkimprov/mnm-hammer","last_synced_at":"2025-06-11T04:42:48.408Z","repository":{"id":41168818,"uuid":"102398086","full_name":"networkimprov/mnm-hammer","owner":"networkimprov","description":"mnm implements TMTP protocol. Let Internet sites message members directly, instead of unreliable, insecure email. Contributors welcome! (Client)","archived":false,"fork":false,"pushed_at":"2022-04-07T10:23:09.000Z","size":1627,"stargazers_count":69,"open_issues_count":2,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-30T22:35:44.804Z","etag":null,"topics":["chat","e-mail","email","golang","imap","jmap","linux","macos","messaging","smtp","tmtp","windows","xmpp"],"latest_commit_sha":null,"homepage":"https://mnmnotmail.org","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/networkimprov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-09-04T20:06:13.000Z","updated_at":"2024-05-21T09:09:59.000Z","dependencies_parsed_at":"2022-07-14T09:22:19.228Z","dependency_job_id":null,"html_url":"https://github.com/networkimprov/mnm-hammer","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/networkimprov%2Fmnm-hammer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/networkimprov%2Fmnm-hammer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/networkimprov%2Fmnm-hammer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/networkimprov%2Fmnm-hammer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/networkimprov","download_url":"https://codeload.github.com/networkimprov/mnm-hammer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237905567,"owners_count":19385037,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chat","e-mail","email","golang","imap","jmap","linux","macos","messaging","smtp","tmtp","windows","xmpp"],"created_at":"2024-09-26T12:22:05.772Z","updated_at":"2025-02-09T04:31:28.797Z","avatar_url":"https://github.com/networkimprov.png","language":"Go","readme":"### mnm is not mail[\u003cimg width=\"200\" hspace=\"50\" align=\"right\" src=\"https://user-images.githubusercontent.com/458838/65545951-535f6980-decb-11e9-8f46-6122198097b0.png\"\u003e](https://mnmnotmail.org)\n\nThe mnm project is building a legitimate replacement for email: \na client (see below), \na [server](https://github.com/networkimprov/mnm), and \na [simple protocol](https://github.com/networkimprov/mnm/blob/master/Protocol.md) between them. \n\nLearn more at [mnmnotmail.org](https://mnmnotmail.org). \n\n[**Download the mnm client app**](https://mnmnotmail.org/#download--startup) \n\n\n### Status\n\n_09 March 2021_ - the [online demo](https://mnmnotmail.org/demo.html) is released. \nIt has been tested on Chrome \u0026 Firefox.\n\n[_03 January 2021_ - v0.9](https://github.com/networkimprov/mnm-hammer/releases/latest)\nis released. It fixes a panic and a few flaws, but is otherwise identical to v0.8.\n\n_15 November 2020_ - v0.8\nis released for Windows 7+ \u0026 MacOS \u0026 Linux. Its UI has been tested on Chrome \u0026 Firefox.  \n_New:_ Markdown reference panel, \"Todo\" tag on new threads, menu of filled-form tables, \nand dozens of other enhancements and fixes.\n\n_20 April 2020_ - v0.7\nis released for Windows 7+ \u0026 MacOS \u0026 Linux. It has been tested with Chrome \u0026 Firefox.  \n_New:_ slide deck layouts, replication to multiple PCs, simplified startup.\n\n_20 October 2019_ -\nv0.6 is released for Windows 7+ \u0026 MacOS \u0026 Linux. It has been tested with Chrome \u0026 Firefox.  \n_New:_ search, message tags, file viewer, UI colors, logo, and more. Fixes many UI flaws.\n\n_29 May 2019_ -\nv0.5 is released. It fixes a panic on Windows, but is otherwise identical to v0.4.\n\n_25 May 2019_ -\nv0.4 is released. It has been tested on Windows 7 \u0026 MacOS \u0026 Linux, with Firefox.  \n_New:_ Windows support. Fixes a crash-recovery failure, and a TMTP handling error.\n\n_13 May 2019_ -\nv0.3 is released. It has been tested on Linux \u0026 MacOS, with Firefox.  \n_New:_ tooltips on menu icons. Fixes a panic, and a handful of UI flaws.\n\n_07 May 2019_ -\nv0.2 is released. It has been tested on Linux \u0026 MacOS, with Firefox.  \n_New:_ a tour with cartoons covering essential features.\n\n_19 April 2019_ -\nv0.1 is released. It has been tested on Linux \u0026 MacOS, with Firefox.\n\n\n### Version Numbering\n\nProduction releases: 1+ . 0 . 0+\n\nPreview releases: _pp_ . 1+ . _pp_ (first \u0026 last from prior production release)\n\nThe second number is only used for previews. \nMost (hopefully all) preview features \u0026 changes appear in the following production release. \n\n\n### Build \u0026 Package\n\nRequires Go 1.13.3+\n\na) `go get github.com/networkimprov/mnm-hammer`  \nb) `cd $GOPATH/src/github.com/networkimprov/mnm-hammer` # project directory can be moved out of $GOPATH  \nc) `./webdeps.sh` # download browser modules  \nd) Edit _kVersionDate_ in main.go  \ne) `./pkg.sh` # make release downloads for all platforms\n\nBuilding for Windows requires patches to the Go source (which do not affect other programs):  \ngo-winfsd.patch fixes [#32088](https://github.com/golang/go/issues/32088)  \ngo-winstat.patch fixes [#9611](https://github.com/golang/go/issues/9611)  \nApply patches with: `cp go*.patch /.../go \u0026\u0026 (cd /.../go \u0026\u0026 git apply go*.patch)`\n\n\n### Testing\n\nAn automated test sequence is defined in test-in.json. \nIt creates accounts Blue and Gold, which then exchange messages. \nIt yields occasional false positives due to loose synchronization between the two accounts. \nAfter a test pass completes, the app provides http on port 8123 (unless --http is given):  \n`./mnm-hammer --test server:port` # server:port is a TMTP service  \nTo access a previous test pass:  \n`(cd test-run/TPD/ \u0026\u0026 ../../mnm-hammer --http :8123)` # TPD is a directory name\n\nIf the TMTP site at `server:port` is not configured for optional third party authentication, \nthe test sequence will produce an expect/got message from \"local1 local\" re \"cs\" \n(which can be ignored).\nThe test sequence cannot run against a TMTP site that requires third party authentication.\n\nCrash testing  \na) `./mnm-hammer --test server:port --crash  init` # make test directory  \nb) `./mnm-hammer --test server:port --crash  dir:service:order:op[:sender:order]` # crash here in test sequence  \nc) `./mnm-hammer --test server:port --verify dir:service:order:count` # recover and verify result\n\n`./test-crash.sh server:port [ item_index ]` # collection of crash/verify runs in single directory\n\n#### Code Coverage\n\na) `go test -c -covermode=count -coverpkg ./...`  \nb) `go build`  \nc) `./mnm-hammer.test --test localhost:443 -test.coverprofile mnm-hammer.cov`  \n. . . \\# this test pass directory is TPD below  \nd) `go tool cover -html=test-run/TPD/mnm-hammer.cov -o web/coverage.html`  \ne) `(cd test-run/TPD/ \u0026\u0026 ../../mnm-hammer --http :8123)`  \nf) Open a browser tab, go to `localhost:8123/w/coverage.html`\n\nRef: https://www.elastic.co/blog/code-coverage-for-your-golang-system-tests\n\n\n### Demo Files\n\nTo generate the demo files:  \na) `cp web/{gui.vue,service-demo.html}`  \nb) `cp web/docs{,-demo}.html`  \nc) `git apply web/*demo.patch`  \n\nTo recreate the `web/...-demo.patch` files after changing the demo files:  \na) `git diff --no-index web/gui.vue web/service-demo.html \u003e web/service-demo.patch`  \nb) `git diff --no-index web/docs.html web/docs-demo.html \u003e web/docs-demo.patch`  \nc) Edit the patches to use `a/web/...-demo.html` as the origin path.  \n\nTo create a JSON object for use in `web/data-demo.js` from an mnm client instance:  \na) Edit `web/gui.vue` to insert `\u003cscript src=\"/w/demodata.js\"\u003e\u003c/script\u003e` after all other `\u003chead\u003e` scripts.  \nb) Quit and restart the app, then _Shift-Reload_ the page at `http://localhost:8123`.  \nc) Invoke `http://localhost:8123/#demodata` and wait while it steps through each account.  \nd) Open the web console and copy the JSON result.  \n\n\n### License\n\n   Copyright 2018, 2020 Liam Breck  \n   Published at https://github.com/networkimprov/mnm-hammer\n\n   This Source Code Form is subject to the terms of the Mozilla Public  \n   License, v. 2.0. If a copy of the MPL was not distributed with this  \n   file, You can obtain one at http://mozilla.org/MPL/2.0/\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetworkimprov%2Fmnm-hammer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnetworkimprov%2Fmnm-hammer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetworkimprov%2Fmnm-hammer/lists"}