Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
02a62cce31 | ||
|
|
2802d780f3 |
+20
@@ -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
|
||||||
+71
-13
@@ -1,16 +1,74 @@
|
|||||||
# Hudra changelog
|
# Hudra
|
||||||
|
|
||||||
## 0.9.0
|
Turn HTML lessons into classroom presentations.
|
||||||
|
|
||||||
- Removed the startup fade and wordmark so presentations begin immediately.
|
Build once.
|
||||||
- Added live audience zoom controls from 70% to 150%.
|
Present everywhere.
|
||||||
- Added audience scroll up/down controls with press-and-hold support.
|
|
||||||
- Added mouse-wheel audience scrolling and Shift + wheel zooming over the current preview.
|
|
||||||
- Added Reset view and live view status.
|
|
||||||
- Kept the product name simply **Hudra**.
|
|
||||||
- Retained dual-screen presenter view, slide previews, timing, clicker support, audience blanking and video controls.
|
|
||||||
|
|
||||||
## 0.9.1
|
---
|
||||||
- Added one narrowly scoped feature: slides containing exactly one image now fit that image to the full audience viewport using `object-fit: contain`.
|
|
||||||
- Landscape images fit to width and portrait images fit to height without cropping or distortion.
|
## Why Hudra?
|
||||||
- All other slide types retain the original Hudra 0.9 behaviour.
|
|
||||||
|
Teachers transitioning from OneNote and PowerPoint to QLearn often maintain two versions of the same lesson.
|
||||||
|
|
||||||
|
Hudra removes that duplication by turning the existing QLearn lesson into the presentation.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
✔ Automatic slide generation
|
||||||
|
|
||||||
|
✔ Presenter dashboard
|
||||||
|
|
||||||
|
✔ Dual-screen presentation
|
||||||
|
|
||||||
|
✔ Timer & clock
|
||||||
|
|
||||||
|
✔ Audience controls
|
||||||
|
|
||||||
|
✔ Keyboard navigation
|
||||||
|
|
||||||
|
✔ Image optimisation
|
||||||
|
|
||||||
|
✔ Browser extension
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Philosophy
|
||||||
|
|
||||||
|
The HTML lesson is the source of truth.
|
||||||
|
|
||||||
|
Hudra doesn't replace your LMS.
|
||||||
|
|
||||||
|
It simply gives it Presentation Mode.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Roadmap
|
||||||
|
|
||||||
|
Current release
|
||||||
|
|
||||||
|
Hudra 0.9.1
|
||||||
|
|
||||||
|
See ROADMAP.md
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
Vision
|
||||||
|
|
||||||
|
Architecture
|
||||||
|
|
||||||
|
Development Decisions
|
||||||
|
|
||||||
|
Roadmap
|
||||||
|
|
||||||
|
Contributing
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT
|
||||||
@@ -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
|
||||||
@@ -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.
|
||||||
+38
@@ -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.
|
||||||
@@ -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.
|
||||||
@@ -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.
|
||||||
@@ -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.
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 37 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 36 KiB |
+13
-2
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"manifest_version": 3,
|
"manifest_version": 3,
|
||||||
"name": "Hudra",
|
"name": "Hudra",
|
||||||
"version": "0.9.1",
|
"version": "0.9.2",
|
||||||
"description": "Hudra turns Canvas/QLearn pages into responsive presentations with automatic pagination, dual-screen presenter view, audience controls, clicker support and local-only processing.",
|
"description": "Hudra turns Canvas/QLearn pages into responsive presentations with automatic pagination, dual-screen presenter view, audience controls, clicker support and local-only processing.",
|
||||||
"permissions": [
|
"permissions": [
|
||||||
"activeTab",
|
"activeTab",
|
||||||
@@ -13,8 +13,19 @@
|
|||||||
"https://*.instructure.com/*",
|
"https://*.instructure.com/*",
|
||||||
"https://*.qlearn.eq.edu.au/*"
|
"https://*.qlearn.eq.edu.au/*"
|
||||||
],
|
],
|
||||||
|
"icons": {
|
||||||
|
"16": "icons/HudraLogo16.png",
|
||||||
|
"32": "icons/HudraLogo32.png",
|
||||||
|
"48": "icons/HudraLogo48.png",
|
||||||
|
"128": "icons/HudraLogo128.png"
|
||||||
|
},
|
||||||
"action": {
|
"action": {
|
||||||
"default_title": "Start or exit Hudra"
|
"default_title": "Start or exit Hudra",
|
||||||
|
"default_icon": {
|
||||||
|
"16": "icons/HudraLogo16.png",
|
||||||
|
"32": "icons/HudraLogo32.png",
|
||||||
|
"48": "icons/HudraLogo48.png"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"background": {
|
"background": {
|
||||||
"service_worker": "background.js"
|
"service_worker": "background.js"
|
||||||
|
|||||||
Reference in New Issue
Block a user