Add triage tests, prepare-export, and UI fixes for Levkin migration.
Cherry-pick heuristics, manifest merge, global file search, scrollbar styling, and pytest/Playwright coverage unblock review and filtered export for mmetl.
This commit is contained in:
+21
-8
@@ -2,7 +2,8 @@
|
||||
|
||||
**Repo:** https://git.levkin.ca/ilia/slack-sieve (public)
|
||||
**Clone:** `git clone git@git.levkin.ca:ilia/slack-sieve.git`
|
||||
**Last updated:** 2026-05-29
|
||||
**Vikunja:** [todo.levkin.ca → Homelab → slack-sieve](https://todo.levkin.ca) (`SLK`)
|
||||
**Last updated:** 2026-06-03
|
||||
|
||||
---
|
||||
|
||||
@@ -17,7 +18,7 @@ Official Slack export (JSON)
|
||||
→ make hydrate # __uploads/ via xoxe URLs in export
|
||||
→ make preset-skips # optional noise-channel skips
|
||||
→ make review # manifest.json (gitignored)
|
||||
→ prepare-export # TODO — filtered Slack-shaped folder/zip
|
||||
→ make prepare-export # prepared-export/ (filtered Slack shape)
|
||||
→ mmetl transform slack
|
||||
→ mmctl import
|
||||
```
|
||||
@@ -46,6 +47,9 @@ make review # http://127.0.0.1:8765
|
||||
|
||||
make hydrate # re-download attachments if needed
|
||||
make preset-skips # apply presets/levkin-skips.json (safe to re-run; keeps your channel decisions)
|
||||
make cherry-pick # bulk data/files picks on priority channels (optional)
|
||||
make prepare-export # after review — filtered export for mmetl
|
||||
make test # pytest + Playwright
|
||||
```
|
||||
|
||||
---
|
||||
@@ -119,16 +123,21 @@ Copy and edit for another workspace.
|
||||
|
||||
---
|
||||
|
||||
## TODO (next implementer)
|
||||
## Open tasks (source of truth)
|
||||
|
||||
1. **`scripts/prepare-export.py`** — read `manifest.json`, emit filtered Slack export dir/zip (`__uploads/` + selected JSON days, thread parents included).
|
||||
2. **Pilot import** — one small channel through `mmetl` → `mmctl` on Mattermost VM; verify threads, files, users.
|
||||
3. **User mapping** — optional `fetch-emails` or Slack ID → Mattermost username map for `mmetl`.
|
||||
4. **Makefile** `make prepare-export` + doc section in README.
|
||||
Tracked in **Vikunja → Homelab → slack-sieve**. Update here when scope changes.
|
||||
|
||||
| P | Task | Owner | Status |
|
||||
|---|------|-------|--------|
|
||||
| **P1** | **Channel review in UI** — `make review`, finish 14 undecided + 3 partial ([order](#suggested-review-order)); save manifest | @you | ⏳ **next** |
|
||||
| **P1** | Pilot import: one channel via `make prepare-export` → `mmetl` → `mmctl` on MM VM `10.0.10.237` | @agent | ⏳ blocked on review |
|
||||
| **P2** | User mapping: Slack ID → Mattermost username for `mmetl` | @agent | backlog |
|
||||
| **P3** | Re-hydrate 13 files that returned HTTP 401 (expired export token) | @you | optional |
|
||||
| — | `scripts/prepare-export.py` + `make prepare-export` | @agent | ✅ done |
|
||||
|
||||
### Mattermost / homelab
|
||||
|
||||
- SSO: Authentik — see ansible `docs/guides/mattermost-authentik-gitlab-oauth.md`
|
||||
- SSO: [authentik-apps.md#mattermost](https://git.levkin.ca/ilia/ansible/src/branch/master/docs/guides/authentik-apps.md#mattermost) (ansible)
|
||||
- Import docs: https://docs.mattermost.com/administration-guide/onboard/migrate-from-slack.html
|
||||
|
||||
---
|
||||
@@ -143,6 +152,10 @@ slack-sieve/
|
||||
scripts/
|
||||
hydrate-export.sh
|
||||
preset-skips.py
|
||||
auto-cherry-pick.py
|
||||
prepare-export.py
|
||||
build-test-fixture.py
|
||||
tests/ # pytest + Playwright (mini-export fixture)
|
||||
presets/
|
||||
levkin-skips.json
|
||||
manifest.json # gitignored — your work in progress
|
||||
|
||||
Reference in New Issue
Block a user