34 Commits
Author SHA1 Message Date
dextmorgn 8b49497965 build(python): replace black+isort+flake8 with ruff
One tool instead of three, one config instead of four duplicated
blocks. black/isort/flake8 dropped from every package's dev deps,
ruff added once; .flake8 deleted, [tool.black]/[tool.isort] blocks
deleted from all 4 sub-package pyproject.toml files.

Config lives once, at the workspace root: ruff walks up from any file
it's checking until it finds a pyproject.toml with a [tool.ruff]
table (verified empirically — a package's own pyproject.toml lacking
that table doesn't stop the search), so the root-level [tool.ruff]
applies to all four packages without duplication. That's the one real
win over the old per-package black/isort blocks, which had to be
copy-pasted four times and kept in sync by hand.

Same rule surface as before, not more: select = E/F/W/I (pycodestyle
+ pyflakes + isort-equivalent), matching exactly what flake8 checked.
ruff has other rule groups (UP/pyupgrade, B/bugbear) that would
surface real things — deliberately left off. Turning those on finds
new debt and is a separate decision with its own diff to review, not
a side effect of swapping the tool underneath an unchanged rule set.
Same E501 exclusion carried over too, same reasoning: the formatter
is the sole authority on line length.

known-first-party carries over unchanged (same isort concern this
repo already fixed once — see "app" vs "flowsint_api" in the ratchet
history) and the wildcard-import per-file-ignore for
flowsint_core/__init__.py still applies, verified directly.

Six files reformatted by `ruff format` where it disagreed with black
on edge cases (import grouping, ternary line-breaking, blank lines
after a class statement) — all cosmetic, no behavior change, reviewed
diff by diff. One real ruff-check finding (an import block ruff's
isort-equivalent wanted sorted differently) — took ruff check --fix.

Verified: `make lint` clean, `make test` green (all 4 packages),
lint-staged tested with a real staged-file run (not just config
inspection) to confirm `uv run ruff format` / `uv run ruff check --fix`
actually execute, mypy ratchet target unaffected (still fires on its
own pre-existing backlog, unrelated to this change).
2026-08-25 09:33:34 +02:00
dextmorgn 2fc60276ba ci: wire lint/typecheck/pre-commit gates that existed but never ran
flake8/mypy/eslint were configured (or, for eslint, declared) but no CI
job and no pre-commit hook ever executed them — black/isort/flake8 had
no line-length agreement either (flake8 defaulted to 79, black to 88).

- .flake8: align max-line-length with black, ignore black-conflicting
  codes, carve out the one file with an intentional wildcard-export API
- Makefile: `make lint` (black/isort/flake8, blocking — repo is clean),
  `make typecheck` (mypy, ratcheted to files the branch touched — ~2200
  pre-existing errors workspace-wide, not fixed blindly in one pass)
- .github/workflows/lint.yml: runs the above in CI, plus the frontend
  equivalents (prettier/eslint blocking where clean, eslint/tsc
  ratcheted where not)
- .github/workflows/tests.yml: add the vitest job that never existed
- flowsint-app/.eslintrc.cjs: parser was declared but never installed
  (yarn lint threw immediately) — install @typescript-eslint/*, add
  react-hooks/recommended; no-explicit-any set to warn (real backlog,
  not fixed blindly)
- lint-staged + husky pre-commit: mirrors the CI checks that are
  actually clean today (black/isort/flake8, prettier). eslint is left
  out of pre-commit on purpose — its backlog would block unrelated
  commits; it stays a CI-only ratchet until paid down.
2026-08-25 09:33:32 +02:00
dextmorgn e8aa938e7a feat(ci): add manual release workflow
workflow_dispatch button to bump version (patch/minor/major/custom),
update CHANGELOG.md, commit, tag and push to main via standard-version
— reusing the existing yarn release / sync-versions.js / .versionrc
setup instead of duplicating bump logic in YAML. The tag push then
triggers images.yml as-is.

Requires a GH_PAT secret: pushes made with the default GITHUB_TOKEN
don't trigger other workflows (GitHub anti-loop policy), so a plain
checkout token would silently skip the images.yml build.

sync-versions.js now also bumps the 4 workspace pyproject.toml files
(flowsint-api/core/enrichers/types) — previously only root
pyproject.toml and flowsint-app/package.json were kept in sync.
standard-version added as an explicit devDependency (was only
resolved transitively via yarn.lock before).
2026-08-24 23:03:29 +02:00
dextmorgn 7d33b813de chore(license): migrate from AGPL-3.0 to Apache License 2.0 2026-01-25 16:19:28 +01:00
dextmorgn 1ce2cbd7a5 feat: neo4j migrations 2026-01-24 19:08:02 +01:00
dextmorgn 18f6591176 feat: flowsint 1.0.0 2025-12-02 21:54:10 +01:00
dextmorgn f90aabb1ba feat: bump version 2025-11-27 17:34:57 +01:00
dextmorgn aecec70408 feat: update licence 2025-11-08 20:26:33 +01:00
dextmorgn 56586e3bf4 feat: new commit instructions 2025-10-29 08:31:41 +01:00
dextmorgn 5b62d9efba feat: flowsint-transforms, flowsint-types, flowsint-core 2025-08-13 17:04:11 +02:00
dextmorgn 0b41783f48 feat: right panel for node details 2025-07-31 15:49:51 +02:00
dextmorgn f2c8d56bcf feat: mistral ai sdk 2025-06-16 12:11:31 +02:00
dextmorgn 7f886db6d5 feat: new flowsint app 2025-06-01 17:32:07 +02:00
dextmorgn a6727f1232 feat: no supabase dependency 2025-05-20 14:46:37 +02:00
dextmorgn ff3570dec0 feat: crazy progress 2025-05-15 17:16:27 +02:00
dextmorgn 18e0e7e533 feat: cryptoscape 2025-04-29 16:17:50 +02:00
dextmorgn 1ff6bf4b88 feat: deploy 2025-03-30 21:23:41 +02:00
dextmorgn 2cf3c8a343 feat: supabase 2025-03-23 23:11:59 +01:00
dextmorgn bae6b5ae5e feat: fastapi + celery 2025-02-27 23:24:13 +01:00
dextmorgn f7127a172a feat: force-grap-2 2025-02-24 13:41:41 +01:00
dextmorgn e3d4232b29 feat: force layout 2025-02-23 23:45:34 +01:00
dextmorgn e60cf02540 feat: move-to-api-for-fetching 2025-02-21 14:57:16 +01:00
dextmorgn 5d1513f36e feat: useInvestigationStore 2025-02-20 15:02:51 +01:00
dextmorgn bf0c192263 feat: bg-color 2025-02-13 18:49:10 +01:00
dextmorgn 99877eb816 feat: shadcn 2025-02-13 17:01:08 +01:00
dextmorgn 5337de1761 feat: api keys panel 2025-02-12 00:07:28 +01:00
dextmorgn eb7fea5b70 feat: dashboard 2025-02-10 17:53:52 +01:00
dextmorgn 53462084b5 feat: ai chat bot 2025-02-10 15:24:56 +01:00
dextmorgn 91af724e19 feat: resizable panels 2025-02-09 18:30:24 +01:00
dextmorgn 33b759a56c feat: delete investigations 2025-02-07 00:39:12 +01:00
dextmorgn 8e973a1279 feat: highlight relations and node 2025-02-06 00:26:41 +01:00
dextmorgn 5bee9a612a feat: user modal 2025-02-04 16:58:09 +01:00
dextmorgn d8ef2d3c9a feat: custom nodes 2025-02-04 00:22:59 +01:00
dextmorgn d743b220d2 feat: first commit 2025-02-02 01:38:30 +01:00