Professionalize repo: linting, tests, CI, and docs#19
Merged
Conversation
Removed in a39bf85, the absence of this rule lets the model emit one suggestion per source activity (commit/email/event), producing 50+ duplicate entries on the same project and blowing past the 11h cap. Bump 2.1.1 → 2.1.2. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Introduce a working lint/typecheck/test toolchain: - ESLint flat config (eslint-config-next) wired into `npm run lint` - `typecheck` script (tsc --noEmit) - Vitest config for unit tests - husky pre-commit (lint-staged) + pre-push (typecheck + test) - Escape JSX entities on the about page to make the lint baseline clean Pre-existing `any` usage and react-hooks deps are downgraded to warnings to track as follow-ups rather than blocking CI on legacy patterns. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Cover the pure, high-value modules with Vitest: - aggregator: hour bucketing, multi-hour spanning, email thread dedup, calendar-notification filtering, and day summary tallies - ai/parse: clean/markdown-wrapped/truncated JSON salvage, hour rounding, confidence normalization, and field defaulting - ai/preprocess: flattening, title derivation, lunch/gap detection - cn(): tailwind class merging 22 tests, timezone-stable fixtures. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- ci.yml: lint, typecheck, and test on push/PR (Node 22) plus an advisory (non-blocking) Semgrep security scan - fallow.yml: advisory dead-code / reachability audit on PRs - dependabot.yml: weekly npm + github-actions updates, dev deps grouped - gitignore: stop tracking firebase-debug.log and stray *.log files Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- AGENTS.md: single source of truth for humans and agents — tech stack, commands, quality gates, workflow, conventions, testing, scope/git/approval rules, and a tracked tech-debt list - CLAUDE.md now imports AGENTS.md (matches the frontkom/frisk convention), replacing the thinner standalone rules and its broken doc links - CONTRIBUTING.md: concise setup + PR workflow for new contributors - README: CI badge and a Development section (lint/typecheck/test, hooks) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Tooling, tests, and docs — minor release. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
semgrep's deps import pkg_resources, which Python 3.12 no longer bundles — install setuptools alongside it (as frisk does) so the advisory scan runs. Also make the step explicitly non-blocking with `|| true`. Bump to 2.2.1. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replace placeholder Vercel domains with the real production domain in the README env/deploy steps and CALLBACK-URLS reference; add a custom-domain + DNS step. Bump to 2.2.2. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Brings the repo up to the standard of
frontkom/frisk— a real, enforced quality toolchain so any senior dev can contribute with confidence.CTO review findings addressed
lintcallednext lintbut ESLint wasn't installed and there was no config. Now: ESLint flat config (eslint-config-next) wired intonpm run lint, green on the current baseline.CLAUDE.mdwith broken doc links. Now: canonicalAGENTS.md(frisk convention) +CONTRIBUTING.md.What changed
eslint.config.mjs(flat config). Pre-existinganyat API boundaries andreact-hooks/exhaustive-depsare warnings (tracked tech-debt), so lint blocks only on real errors. Escaped JSX entities on the about page to clear the baseline.aggregator(bucketing, spanning, email dedup, summaries),ai/parse(clean/markdown/truncated JSON, rounding, defaults),ai/preprocess(titles, lunch/gap detection),cn(). Timezone-stable fixtures; suite pinsTZ=Europe/Oslo.ci.yml): lint, typecheck, test on Node 22, plus advisory Semgrep.fallow.ymladvisory audit.dependabot.ymlweekly updates.AGENTS.mdis now the single source of truth;CLAUDE.md→@AGENTS.md;CONTRIBUTING.md; README CI badge + Development section.firebase-debug.log/ stray logs. Version bumped to 2.2.0.Deliberately not done (noted for follow-up)
anyboundaries and fixingexhaustive-deps(tracked as warnings inAGENTS.md).0001, two0002) — left alone to avoid merging genuinely distinct decisions.Test plan
npm run lint— 0 errorsnpm run typecheck— passesnpm test— 22/22 passnpm run build— compiles🤖 Generated with Claude Code