open-index/open-npm huggingface dataset:
npm package: @naamanu/bragbot
Description: Generate brag documents from your git history
Author: Nana Adjei Manu
Latest version: 1.0.2

# bragbot

Generate brag documents from your git history. Inspired by [Julia Evans' blog post on brag documents](https://jvns.ca/blog/brag-documents/).

## Installation

```bash
npm install -g @naamanu/bragbot
```

## Usage

### One-time Generation

Generate a brag document for any git repository:

```bash
# Current directory, last month
bragbot

# Specific repo and date range
bragbot /path/to/repo --since "2025-01-01" --until "2025-06-30"

# Output to specific file
bragbot -o my-brag.md

# Output to stdout (for piping)
bragbot --stdout | less

# Filter by author
bragbot --author "jane@example.com"
```

#### Options

| Option | Description |
|--------|-------------|
| `-s, --since <date>` | Start date (default: "1 month ago") |
| `-u, --until <date>` | End date (default: "today") |
| `-a, --author <name>` | Filter by author name/email |
| `-o, --output <file>` | Output file (default: `brag-<start>-to-<end>.md`) |
| `--stdout` | Output to stdout instead of file |

### Background Daemon

Run bragbot as a background service to automatically collect daily brag documents.

#### Add Repositories to Watch

```bash
# Add a repo with auto-detected settings
bragbot daemon add /path/to/repo

# Add with custom name and author filter
bragbot daemon add /path/to/repo --name "My Project" --author "me@example.com"

# Add with custom output directory
bragbot daemon add /path/to/repo --output-dir ~/brags
```

#### Manage Watched Repos

```bash
# List all watched repositories
bragbot daemon list

# Remove a repository
bragbot daemon remove /path/to/repo
```

#### Configure Schedule

```bash
# Run daily at 9 AM (default)
bragbot daemon schedule daily

# Run weekly (Mondays at 9 AM)
bragbot daemon schedule weekly

# Run at specific hour (0-23)
bragbot daemon schedule 17  # 5 PM
```

#### Start/Stop Daemon

```bash
# Start background daemon
bragbot daemon start

# Check status
bragbot daemon status

# Stop daemon
bragbot daemon stop

# Run collection once (without daemon)
bragbot daemon run
```

#### Configuration

All daemon configuration is stored in `~/.bragbot/`:

| File | Description |
|------|-------------|
| `config.json` | Watched repos and schedule |
| `daemon.pid` | Process ID of running daemon |
| `daemon.log` | Daemon logs |
| `brags/` | Default output directory for collected brags |

## Output Format

Bragbot generates a structured markdown document with:

- **Summary** - Total commits, branches, and identified themes (features, bug fixes, etc.)
- **Work by Branch/Feature** - Grouped commits with full commit descriptions
- **Detailed Commit Log** - Table of all commits with dates, hashes, and messages

All data is read from local git history - no external requests are made.

## Development

```bash
# Install dependencies
bun install

# Run in development
bun run dev

# Build for production
bun run build
```

## License

MIT
npm package: @naamanu/tagu
Description: Type-safe pattern matching for TypeScript discriminated unions
Author: Nana Adjei Manu
Latest version: 0.0.1

# tagu

Type-safe pattern matching for TypeScript discriminated unions.

## Installation

```bash
npm install @naamanu/tagu
```

## Usage

```ts
import { match } from "@naamanu/tagu";

// Define a tagged union
type Result =
  | { _tag: "Success"; data: string }
  | { _tag: "Failure"; error: string };

const result: Result = { _tag: "Success", data: "Hello" };

// Match against it
const message = match(result)({
  Success: ({ data }) => `Got: ${data}`,
  Failure: ({ error }) => `Error: ${error}`,
});

console.log(message); // "Got: Hello"
```

## API

### `match<T>(value: T)`

Pattern matches on a tagged union value. Returns a function that takes a pattern object with handlers for each variant.

```ts
type Shape =
  | { _tag: "Circle"; radius: number }
  | { _tag: "Rectangle"; width: number; height: number };

const shape: Shape = { _tag: "Circle", radius: 5 };

const area = match(shape)({
  Circle: ({ radius }) => Math.PI * radius * radius,
  Rectangle: ({ width, height }) => width * height,
});
```

### `Pattern<T, R>`

Type helper for defining pattern objects. Ensures exhaustive matching at compile time.

```ts
import { Pattern } from "@naamanu/tagu";

const pattern: Pattern<Shape, number> = {
  Circle: ({ radius }) => Math.PI * radius * radius,
  Rectangle: ({ width, height }) => width * height,
};
```

### `Tag`

Base type constraint for tagged union members. All variants must have a `_tag` string property.

## License

MIT
npm package: @naamedi/playwright-reporter
Description: A custom reporter for Playwright with dashboard, detailed test results, and modern UI
Author: Damien Hoffmann
Latest version: 1.7.0

# @naamedi/playwright-reporter

A custom reporter for Playwright with dashboard, detailed test results, and modern UI.

## Installation

```bash
npm install @naamedi/playwright-reporter
```

## Usage

In your `playwright.config.ts`:

```typescript
import { defineConfig } from "@playwright/test";

export default defineConfig({
  reporter: [
    [
      "@naamedi/playwright-reporter",
      {
        outputDir: "./custom-report",
        title: "Test Report",
        open: "on-failure",
        name: "Nom du projet ou campagne",
        environment: "Preprod",
        version: "1.2.3",
        user: "Naamedi",
      },
    ],
  ],
});
```

### Variables optionnelles

Les variables `name`, `environment`, `version`, `user` sont facultatives. Si renseignées, elles apparaîtront dans le dashboard du rapport sous le titre principal.

## Features

- Interactive dashboard with metrics and charts
- Filterable test table with sorting
- Detailed test panels with videos/screenshots/traces
- Modern UI with dark/light mode
- Integrated trace viewer (no external dependencies)

## CLI - Serveur de développement

### Commande courte (recommandée)

```bash
# Auto-détection du répertoire de rapport
npx pw-serve

# Spécifier un répertoire
npx pw-serve ./custom-report

# Utiliser un port personnalisé
npx pw-serve -p 4000
```

### Installation globale (encore plus court)

```bash
# Installation
npm install -g @naamedi/playwright-reporter

# Utilisation
pw-serve
pw-serve ./custom-report
pw-serve -p 4000
```

### Commande complète (alternative)

```bash
npx @naamedi/playwright-reporter serve
npx @naamedi/playwright-reporter --help
```

## License

MIT