diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..314aa86 --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +# VS Code +.vscode/ +*.code-workspace + +# Windows +Thumbs.db +Desktop.ini + +# macOS +.DS_Store + +# Build and release output +releases/*.zip +dist/ +build/ + +# Temporary files +*.tmp +*.temp +*.log diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..d989365 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,40 @@ +# Contributing to Hudra + +Hudra is currently an early-stage project. + +## Development principles + +Changes should be: + +- focused +- easy to understand +- independently testable +- backwards compatible where practical + +## Before making a change + +1. Create or identify an issue. +2. Describe the problem being solved. +3. Define clear acceptance criteria. +4. Make the smallest practical change. +5. Test against the stable lesson examples. +6. Confirm existing presentation behaviour still works. + +## Commit messages + +Use short, descriptive commit messages, for example: + +- Fix audience zoom reset +- Add presenter keyboard shortcut +- Improve image-only slide sizing +- Update installation documentation + +## Releases + +Stable releases should include: + +- an updated manifest version +- changelog entry +- Git commit +- Git tag +- release ZIP diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..4f1e087 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Kaden Napper + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/ROADMAP.md b/ROADMAP.md new file mode 100644 index 0000000..800e28b --- /dev/null +++ b/ROADMAP.md @@ -0,0 +1,38 @@ +# Hudra Roadmap + +Hudra is developed incrementally, with stability and simplicity prioritised +over large feature releases. + +## Current stable release + +### Hudra 0.9.1 + +- Automatic slide generation from HTML headings +- Presenter dashboard +- Dual-screen presentation +- Current and next slide previews +- Timer and clock +- Audience zoom and scrolling +- Keyboard and presentation remote support +- Image-only slide optimisation + +## Near-term priorities + +### Hudra 0.10 + +- Presenter interface refinement +- Improved reliability +- Documentation +- Classroom testing +- Accessibility review + +## Future exploration + +- Video-focused slide layouts +- Presenter annotations +- Laser pointer +- Improved media handling +- Wider LMS compatibility +- Managed browser deployment + +Future features will be developed and tested individually to avoid regressions. diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md new file mode 100644 index 0000000..4ce669f --- /dev/null +++ b/docs/ARCHITECTURE.md @@ -0,0 +1,53 @@ +# Hudra Architecture + +## Overview + +Hudra is a Manifest V3 browser extension that presents the existing DOM of an +HTML lesson. + +It does not convert the lesson into a proprietary format. + +## Slide detection + +The current presentation model uses HTML headings: + +- H1 identifies the lesson title +- H2 identifies the beginning of a new slide +- content following an H2 belongs to that slide until the next H2 + +## Main components + +### background.js + +Handles extension-level behaviour and presentation launch logic. + +### controls.html + +Provides the presenter dashboard interface. + +### controls.css + +Styles the presenter controls. + +### controls.js + +Manages presenter navigation, controls and audience communication. + +### presenter.js + +Creates and manages the audience presentation experience. + +### manifest.json + +Defines the extension metadata, permissions and version. + +## Design constraints + +Hudra should avoid: + +- cloning complex media unnecessarily +- fragile LMS-specific DOM assumptions +- large content-detection systems +- destructive modification of the original lesson + +New media features should be implemented and tested independently. diff --git a/docs/DECISIONS.md b/docs/DECISIONS.md new file mode 100644 index 0000000..1908eca --- /dev/null +++ b/docs/DECISIONS.md @@ -0,0 +1,31 @@ +# Hudra Development Decisions + +## Decision 001 — HTML is the source of truth + +Hudra presents the existing lesson rather than requiring teachers to maintain +a separate presentation. + +## Decision 002 — No proprietary lesson format + +Teachers should continue authoring normal HTML in QLearn, Canvas or another +web-based platform. + +## Decision 003 — Simplicity over automation + +Hudra should avoid complicated content heuristics unless they are reliable and +provide a clear classroom benefit. + +## Decision 004 — Stable features are added incrementally + +Media-specific improvements should be developed and tested one at a time. + +## Decision 005 — Hudra 0.9.1 is the stable baseline + +Hudra 0.9.1 is the known-good version and is tagged in Git as v0.9.1. + +## Decision 006 — Public and internal versions may differ + +The visible product branding may show a major/minor version such as Hudra 0.9. + +The browser extension manifest may use a patch version such as 0.9.1 for +maintenance and debugging. diff --git a/docs/VISION.md b/docs/VISION.md new file mode 100644 index 0000000..a1b0575 --- /dev/null +++ b/docs/VISION.md @@ -0,0 +1,48 @@ +# Hudra Vision + +## Purpose + +Hudra turns an existing HTML lesson into a classroom presentation. + +It is designed primarily for QLearn and Canvas, while remaining compatible +with ordinary HTML pages. + +## The problem + +Teachers transitioning from OneNote and PowerPoint to QLearn often maintain +two versions of the same lesson: + +- the QLearn page used by students +- the PowerPoint used for classroom presentation + +This creates duplicated work and version-control problems. + +## The idea + +The HTML lesson should be the single source of truth. + +Teachers should build the lesson once and use that same lesson: + +- in the classroom +- online +- for students learning from home +- as a presentation + +## Core message + +> Build once. Present everywhere. + +## Design principles + +Hudra should be: + +- simple +- fast +- reliable +- lightweight +- predictable +- easy for teachers to understand + +Hudra should not introduce a proprietary lesson format. + +It should enhance existing lesson content rather than rebuild or convert it.