Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: CI

on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
inputs:
branch:
description: 'Branch to test'
required: false
default: 'main'

jobs:
test:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Install Playwright browsers
run: npx playwright install --with-deps

- name: Build
run: npm run build

- name: Run E2E tests
run: npm run test:e2e

- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 30
44 changes: 44 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Changelog

All notable changes to Qliphoth will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.2.0] - 2025-01-19

### Added

- **Athame Editor Component** - Full-featured Sigil code editor with syntax highlighting, bracket matching, and undo/redo
- **Cross-platform support** - Compile to WASM (browser), SSR (server), or GTK4 (desktop)
- **Comprehensive hooks library**
- State: `use_state`, `use_reducer`, `use_context`
- Effects: `use_effect`, `use_layout_effect`
- Performance: `use_memo`, `use_callback`, `use_transition`, `use_deferred_value`
- Data: `use_fetch`, `use_mutation`
- DOM: `use_ref`, `use_intersection`, `use_animation_frame`
- Utilities: `use_debounce`, `use_throttle`, `use_local_storage`, `use_media_query`
- **Actor-based state management** with time-travel debugging
- **Type-safe router** with guards, protected routes, and dynamic parameters
- **Platform abstraction layer** for cross-platform development
- **E2E test suite** with Playwright

### Changed

- Restructured project with workspace packages (`qliphoth-sys`, `qliphoth-router`)
- Converted to standard Sigil syntax throughout codebase
- Improved VDOM reconciliation algorithm

## [0.1.0] - 2025-01-01

### Added

- Initial release
- Core VDOM implementation
- Basic component system with lifecycle events
- Signal-based reactivity
- Browser bindings via `qliphoth-sys`
- HTML element builders and primitives

[0.2.0]: https://github.com/Daemoniorum-LLC/qliphoth/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/Daemoniorum-LLC/qliphoth/releases/tag/v0.1.0
45 changes: 45 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment:

- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members

Examples of unacceptable behavior:

- The use of sexualized language or imagery, and sexual attention or advances
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information without explicit permission
- Other conduct which could reasonably be considered inappropriate

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the project maintainers. All complaints will be reviewed and
investigated promptly and fairly.

Project maintainers are obligated to respect the privacy and security of the
reporter of any incident.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org),
version 2.0.
83 changes: 83 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Contributing to Qliphoth

Thank you for your interest in contributing to Qliphoth! This document provides guidelines and information for contributors.

## Code of Conduct

By participating in this project, you agree to abide by our [Code of Conduct](CODE_OF_CONDUCT.md).

## How to Contribute

### Reporting Issues

- Check existing issues to avoid duplicates
- Use a clear, descriptive title
- Include steps to reproduce for bugs
- Specify your environment (OS, Sigil version, browser)

### Pull Requests

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/your-feature`)
3. Make your changes
4. Ensure tests pass (`npm run test:e2e`)
5. Commit with clear messages
6. Push to your fork
7. Open a Pull Request

### Commit Messages

We follow conventional commits:

- `feat:` New features
- `fix:` Bug fixes
- `docs:` Documentation changes
- `refactor:` Code refactoring
- `test:` Test additions/changes
- `chore:` Maintenance tasks

### Code Style

- Follow existing patterns in the codebase
- Use Sigil's idiomatic conventions
- Include SPDX license headers in new files:
```sigil
// SPDX-License-Identifier: MIT OR Apache-2.0
// Copyright (c) 2025 Daemoniorum, LLC
```

### Testing

- Add tests for new features
- Ensure E2E tests pass before submitting
- Test across multiple browsers when relevant

## Development Setup

1. Clone the repository
2. Install dependencies: `npm install`
3. Start dev server: `npm run dev`
4. Run tests: `npm run test:e2e`

## Project Structure

```
src/
core/ # Runtime, reconciliation, VDOM
components/ # Component system
hooks/ # React-style hooks
router/ # Client-side routing
state/ # State management
platform/ # Cross-platform abstraction
packages/
qliphoth-sys/ # System bindings
qliphoth-router/ # Router package
```

## License

By contributing, you agree that your contributions will be licensed under the MIT OR Apache-2.0 dual license.

## Questions?

Open an issue or reach out to the maintainers. We're happy to help!
Loading