Rename rhemawave to radiantwave throughout
build-prod.yml / build (push) Failing after 2s
build-dev.yml / build (push) Failing after 2s

This commit is contained in:
NeilClack
2026-08-08 01:20:11 -05:00
parent 1b80265e80
commit 312f5e2a90
48 changed files with 160 additions and 161 deletions
+1 -1
View File
@@ -9,7 +9,7 @@
"type": "go", "type": "go",
"request": "launch", "request": "launch",
"mode": "debug", "mode": "debug",
"program": "rhemawave.go", "program": "radiantwave.go",
"env": { "env": {
"DEBUGINFOD_URLS": "" "DEBUGINFOD_URLS": ""
} }
+2 -2
View File
@@ -10,7 +10,7 @@ Dev shell via direnv (`use flake` in `.envrc`). Inside the nix dev shell:
```sh ```sh
# Build # Build
go build -o bin/radiantwave radiantwave.go go build -o bin/radiantwave .
# Run # Run
./bin/radiantwave ./bin/radiantwave
@@ -48,7 +48,7 @@ Both run `nix build -L` on a self-hosted runner (`neils-server-runner`).
## Key Architecture ## Key Architecture
- **Entry**: `rhemawave.go` → `internal/application.Run()` - **Entry**: `radiantwave.go` → `internal/application.Run()`
- **State machine**: `internal/application/application.go` — FIRST_RUN → NEEDS_INTERNET → NEEDS_EMAIL_ADDRESS → NEEDS_LICENSE_KEY → DOWNLOADING_ASSETS → READY - **State machine**: `internal/application/application.go` — FIRST_RUN → NEEDS_INTERNET → NEEDS_EMAIL_ADDRESS → NEEDS_LICENSE_KEY → DOWNLOADING_ASSETS → READY
- **Pages**: `internal/page/` — router pattern with page interface (`page.go`) - **Pages**: `internal/page/` — router pattern with page interface (`page.go`)
- **DB**: SQLite at `~/.local/share/radiantwave/database.sqlite`, managed by GORM in `internal/db/` - **DB**: SQLite at `~/.local/share/radiantwave/database.sqlite`, managed by GORM in `internal/db/`
+1 -1
View File
@@ -16,7 +16,7 @@
3. Open a pull request to =dev= 3. Open a pull request to =dev=
4. CI: Run =nix build= to verify no errors 4. CI: Run =nix build= to verify no errors
5. CI: Run linting and unit tests 5. CI: Run linting and unit tests
6. CI: Auto-update =rhemawave-dev= flake input 6. CI: Auto-update =radiantwave-dev= flake input
7. CI: Build all =dev= VMs in parallel (Kiosk, Commercial, RPi) 7. CI: Build all =dev= VMs in parallel (Kiosk, Commercial, RPi)
8. Merge the pull request to =dev= after CI passes 8. Merge the pull request to =dev= after CI passes
+1 -1
View File
@@ -1,5 +1,5 @@
* Virtual Machine Testing * Virtual Machine Testing
To be completed after updating rhemawave-dev, deleting nixos.qcow2, and building rhemawavekiosk-dev To be completed after updating radiantwave-dev, deleting nixos.qcow2, and building radiantwavekiosk-dev
- [ ] Closure builds - [ ] Closure builds
- [ ] VM Starts - [ ] VM Starts
+1 -1
View File
@@ -35,7 +35,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
### Changed (Major Refactors) ### Changed (Major Refactors)
- Mixer package: inject audio backend dependencies for testability - Mixer package: inject audio backend dependencies for testability
- SwitchDevice now takes *db.AppConfig to access saved volume - SwitchDevice now takes *db.AppConfig to access saved volume
- Audio files moved from ~/.local/share/rhemawave/audio to ~/.radiantwave/audio - Audio files moved from ~/.local/share/radiantwave/audio to ~/.radiantwave/audio
- State machine uses DOWNLOADING_ASSETS state before READY - State machine uses DOWNLOADING_ASSETS state before READY
- checkState() skips re-navigation when transitioning between HOME-mapped states - checkState() skips re-navigation when transitioning between HOME-mapped states
- network.init() logs warning instead of crashing when D-Bus is unavailable - network.init() logs warning instead of crashing when D-Bus is unavailable
+3 -4
View File
@@ -69,11 +69,10 @@
postInstall = '' postInstall = ''
mkdir -p $out/share/radiantwave mkdir -p $out/share/radiantwave
cp -r share/radiantwave/* $out/share/radiantwave/ cp -r share/radiantwave/* $out/share/radiantwave/
mv $out/bin/rhemawave $out/bin/radiantwave
''; '';
meta = with pkgs.lib; { meta = with pkgs.lib; {
description = "RhemaWave kiosk application"; description = "RadiantWave kiosk application";
license = licenses.unfree; license = licenses.unfree;
platforms = platforms.linux ++ platforms.darwin; platforms = platforms.linux ++ platforms.darwin;
}; };
@@ -89,11 +88,11 @@
export CGO_CFLAGS="$(pkg-config --cflags SDL2_mixer SDL2_ttf SDL2_image) $CGO_CFLAGS" export CGO_CFLAGS="$(pkg-config --cflags SDL2_mixer SDL2_ttf SDL2_image) $CGO_CFLAGS"
export CGO_LDFLAGS="$(pkg-config --libs SDL2_mixer SDL2_ttf SDL2_image) $CGO_LDFLAGS" export CGO_LDFLAGS="$(pkg-config --libs SDL2_mixer SDL2_ttf SDL2_image) $CGO_LDFLAGS"
echo "RhemaWave dev shell" echo "RadiantWave dev shell"
echo " go version: $(go version)" echo " go version: $(go version)"
echo " CGO_ENABLED=1" echo " CGO_ENABLED=1"
echo "" echo ""
echo "Build: go build -o bin/radiantwave radiantwave.go" echo "Build: go build -o bin/radiantwave ."
echo "Run: ./bin/radiantwave" echo "Run: ./bin/radiantwave"
''; '';
}; };
+1 -1
View File
@@ -1,4 +1,4 @@
module rhemawavetech.com/rhemawave module radiantwavetech.com/radiantwave
go 1.24.0 go 1.24.0
+15 -15
View File
@@ -11,19 +11,19 @@ import (
"github.com/veandco/go-sdl2/sdl" "github.com/veandco/go-sdl2/sdl"
"github.com/veandco/go-sdl2/ttf" "github.com/veandco/go-sdl2/ttf"
"gorm.io/gorm" "gorm.io/gorm"
"rhemawavetech.com/rhemawave/internal/assets" "radiantwavetech.com/radiantwave/internal/assets"
"rhemawavetech.com/rhemawave/internal/db" "radiantwavetech.com/radiantwave/internal/db"
"rhemawavetech.com/rhemawave/internal/download" "radiantwavetech.com/radiantwave/internal/download"
"rhemawavetech.com/rhemawave/internal/fontManager" "radiantwavetech.com/radiantwave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/graphics" "radiantwavetech.com/radiantwave/internal/graphics"
"rhemawavetech.com/rhemawave/internal/keybinds" "radiantwavetech.com/radiantwave/internal/keybinds"
"rhemawavetech.com/rhemawave/internal/license" "radiantwavetech.com/radiantwave/internal/license"
"rhemawavetech.com/rhemawave/internal/logger" "radiantwavetech.com/radiantwave/internal/logger"
"rhemawavetech.com/rhemawave/internal/mixer" "radiantwavetech.com/radiantwave/internal/mixer"
"rhemawavetech.com/rhemawave/internal/network" "radiantwavetech.com/radiantwave/internal/network"
"rhemawavetech.com/rhemawave/internal/page" "radiantwavetech.com/radiantwave/internal/page"
"rhemawavetech.com/rhemawave/internal/shaderManager" "radiantwavetech.com/radiantwave/internal/shaderManager"
"rhemawavetech.com/rhemawave/internal/sync" "radiantwavetech.com/radiantwave/internal/sync"
) )
const ( const (
@@ -31,7 +31,7 @@ const (
openGLMajorVersion = 3 openGLMajorVersion = 3
openGLMinorVersion = 3 openGLMinorVersion = 3
// volumeStepSize = 16 // volumeStepSize = 16
// apiURL = "https://portal.rhemawavetech.com/api/v1" // apiURL = "https://portal.radiantwavetech.com/api/v1"
) )
type State int type State int
@@ -346,7 +346,7 @@ func (app *Application) initializeSDLAndOpenGL() (W, H int32) {
logger.Info("Creating window") logger.Info("Creating window")
window, err := sdl.CreateWindow( window, err := sdl.CreateWindow(
"Rhema Wave", "Radiant Wave",
sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED,
sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED,
displayMode.W, displayMode.W,
+3 -3
View File
@@ -5,8 +5,8 @@ import (
"time" "time"
"gorm.io/gorm" "gorm.io/gorm"
"rhemawavetech.com/rhemawave/internal/db" "radiantwavetech.com/radiantwave/internal/db"
"rhemawavetech.com/rhemawave/internal/page" "radiantwavetech.com/radiantwave/internal/page"
) )
// Regression: The app used to reach READY before audio downloads completed, // Regression: The app used to reach READY before audio downloads completed,
@@ -446,7 +446,7 @@ func TestMultipleComputeStateCallsAfterDownloadComplete(t *testing.T) {
} }
// TestDataDirFor verifies the per-user data directory resolves to the // TestDataDirFor verifies the per-user data directory resolves to the
// radiantwave path, not the legacy rhemawave name. // radiantwave path, not the legacy radiantwave name.
func TestDataDirFor(t *testing.T) { func TestDataDirFor(t *testing.T) {
got := DataDirFor("/home/kiosk") got := DataDirFor("/home/kiosk")
want := "/home/kiosk/.local/share/radiantwave" want := "/home/kiosk/.local/share/radiantwave"
+2 -2
View File
@@ -11,8 +11,8 @@ import (
"strings" "strings"
"gorm.io/gorm" "gorm.io/gorm"
"rhemawavetech.com/rhemawave/internal/db" "radiantwavetech.com/radiantwave/internal/db"
"rhemawavetech.com/rhemawave/internal/logger" "radiantwavetech.com/radiantwave/internal/logger"
) )
// DownloadStatus holds information related to downloads and is // DownloadStatus holds information related to downloads and is
+2 -2
View File
@@ -11,8 +11,8 @@ import (
"gorm.io/driver/sqlite" "gorm.io/driver/sqlite"
"gorm.io/gorm" "gorm.io/gorm"
"rhemawavetech.com/rhemawave/internal/db" "radiantwavetech.com/radiantwave/internal/db"
"rhemawavetech.com/rhemawave/internal/download" "radiantwavetech.com/radiantwave/internal/download"
) )
func md5Hex(data []byte) string { func md5Hex(data []byte) string {
+5 -5
View File
@@ -11,9 +11,9 @@ import (
"github.com/go-gl/mathgl/mgl32" "github.com/go-gl/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl" "github.com/veandco/go-sdl2/sdl"
"github.com/veandco/go-sdl2/ttf" "github.com/veandco/go-sdl2/ttf"
"rhemawavetech.com/rhemawave/internal/db" "radiantwavetech.com/radiantwave/internal/db"
"rhemawavetech.com/rhemawave/internal/graphics" "radiantwavetech.com/radiantwave/internal/graphics"
"rhemawavetech.com/rhemawave/internal/shaderManager" "radiantwavetech.com/radiantwave/internal/shaderManager"
) )
// FontManager handles the loading and management of fonts. // FontManager handles the loading and management of fonts.
@@ -217,12 +217,12 @@ func (fm *FontManager) CreateScrambledFont(baseFontName string, newFontName stri
// - Maintains pixel-perfect reversibility despite high visual entropy // - Maintains pixel-perfect reversibility despite high visual entropy
// - Produces deterministic, reproducible patterns for each character // - Produces deterministic, reproducible patterns for each character
// //
// Within our Rhema Wave generation system, these transformed characters create spatial interference // Within our Radiant Wave generation system, these transformed characters create spatial interference
// patterns designed for subconscious processing. Each character contributes a unique frequency // patterns designed for subconscious processing. Each character contributes a unique frequency
// signature to the overall visual field, with Fibonacci-based geometry intended to create harmonic // signature to the overall visual field, with Fibonacci-based geometry intended to create harmonic
// relationships between character patterns. The result is a consciously illegible display that // relationships between character patterns. The result is a consciously illegible display that
// maintains structured information content in the spatial domain, forming a component of the // maintains structured information content in the spatial domain, forming a component of the
// broader Rhema Wave output. // broader Radiant Wave output.
func (fm *FontManager) scrambleSurface(surface *sdl.Surface, r rune) error { func (fm *FontManager) scrambleSurface(surface *sdl.Surface, r rune) error {
if surface.W < 8 || surface.H < 8 { if surface.W < 8 || surface.H < 8 {
return nil return nil
+1 -1
View File
@@ -7,7 +7,7 @@ import (
"time" "time"
"gorm.io/gorm" "gorm.io/gorm"
"rhemawavetech.com/rhemawave/internal/db" "radiantwavetech.com/radiantwave/internal/db"
) )
// ─── Level ─────────────────────────────────────────────────────────────────── // ─── Level ───────────────────────────────────────────────────────────────────
+2 -2
View File
@@ -8,8 +8,8 @@ import (
"github.com/veandco/go-sdl2/mix" "github.com/veandco/go-sdl2/mix"
"github.com/veandco/go-sdl2/sdl" "github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/db" "radiantwavetech.com/radiantwave/internal/db"
"rhemawavetech.com/rhemawave/internal/logger" "radiantwavetech.com/radiantwave/internal/logger"
) )
var ( var (
+1 -1
View File
@@ -4,7 +4,7 @@ import (
"math" "math"
"testing" "testing"
"rhemawavetech.com/rhemawave/internal/mixer" "radiantwavetech.com/radiantwave/internal/mixer"
) )
func TestSetVolume(t *testing.T) { func TestSetVolume(t *testing.T) {
+1 -1
View File
@@ -9,7 +9,7 @@ import (
gonm "github.com/Wifx/gonetworkmanager/v2" gonm "github.com/Wifx/gonetworkmanager/v2"
"github.com/google/uuid" "github.com/google/uuid"
"rhemawavetech.com/rhemawave/internal/logger" "radiantwavetech.com/radiantwave/internal/logger"
) )
// ─── Public types ───────────────────────────────────────────────────────────── // ─── Public types ─────────────────────────────────────────────────────────────
+6 -6
View File
@@ -7,12 +7,12 @@ import (
"github.com/go-gl/gl/v3.3-core/gl" "github.com/go-gl/gl/v3.3-core/gl"
"github.com/go-gl/mathgl/mgl32" "github.com/go-gl/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl" "github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors" "radiantwavetech.com/radiantwave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db" "radiantwavetech.com/radiantwave/internal/db"
"rhemawavetech.com/rhemawave/internal/fontManager" "radiantwavetech.com/radiantwave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/logger" "radiantwavetech.com/radiantwave/internal/logger"
"rhemawavetech.com/rhemawave/internal/mixer" "radiantwavetech.com/radiantwave/internal/mixer"
"rhemawavetech.com/rhemawave/internal/shaderManager" "radiantwavetech.com/radiantwave/internal/shaderManager"
) )
const systemDefaultDeviceName = "System Default" const systemDefaultDeviceName = "System Default"
+1 -1
View File
@@ -3,7 +3,7 @@ package page
import ( import (
"testing" "testing"
"rhemawavetech.com/rhemawave/internal/mixer" "radiantwavetech.com/radiantwave/internal/mixer"
) )
func TestCurrentDeviceIndex(t *testing.T) { func TestCurrentDeviceIndex(t *testing.T) {
+6 -6
View File
@@ -7,12 +7,12 @@ import (
"github.com/go-gl/gl/v3.3-core/gl" "github.com/go-gl/gl/v3.3-core/gl"
"github.com/go-gl/mathgl/mgl32" "github.com/go-gl/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl" "github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors" "radiantwavetech.com/radiantwave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db" "radiantwavetech.com/radiantwave/internal/db"
"rhemawavetech.com/rhemawave/internal/fontManager" "radiantwavetech.com/radiantwave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/logger" "radiantwavetech.com/radiantwave/internal/logger"
"rhemawavetech.com/rhemawave/internal/mixer" "radiantwavetech.com/radiantwave/internal/mixer"
"rhemawavetech.com/rhemawave/internal/shaderManager" "radiantwavetech.com/radiantwave/internal/shaderManager"
) )
// focusToggle is the focus state of the audio on/off toggle, the topmost // focusToggle is the focus state of the audio on/off toggle, the topmost
+5 -5
View File
@@ -7,11 +7,11 @@ import (
"github.com/go-gl/gl/v3.3-core/gl" "github.com/go-gl/gl/v3.3-core/gl"
"github.com/go-gl/mathgl/mgl32" "github.com/go-gl/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl" "github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors" "radiantwavetech.com/radiantwave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db" "radiantwavetech.com/radiantwave/internal/db"
"rhemawavetech.com/rhemawave/internal/fontManager" "radiantwavetech.com/radiantwave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/logger" "radiantwavetech.com/radiantwave/internal/logger"
"rhemawavetech.com/rhemawave/internal/shaderManager" "radiantwavetech.com/radiantwave/internal/shaderManager"
) )
var audioTrackSeed = []db.AudioTrack{ var audioTrackSeed = []db.AudioTrack{
+4 -4
View File
@@ -7,10 +7,10 @@ import (
"github.com/go-gl/gl/v3.3-core/gl" "github.com/go-gl/gl/v3.3-core/gl"
"github.com/go-gl/mathgl/mgl32" "github.com/go-gl/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl" "github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors" "radiantwavetech.com/radiantwave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db" "radiantwavetech.com/radiantwave/internal/db"
"rhemawavetech.com/rhemawave/internal/fontManager" "radiantwavetech.com/radiantwave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/shaderManager" "radiantwavetech.com/radiantwave/internal/shaderManager"
) )
// emailRegex validates email format // emailRegex validates email format
+6 -6
View File
@@ -6,14 +6,14 @@ import (
"github.com/go-gl/gl/v3.3-core/gl" "github.com/go-gl/gl/v3.3-core/gl"
"github.com/go-gl/mathgl/mgl32" "github.com/go-gl/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl" "github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors" "radiantwavetech.com/radiantwave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db" "radiantwavetech.com/radiantwave/internal/db"
"rhemawavetech.com/rhemawave/internal/download" "radiantwavetech.com/radiantwave/internal/download"
"rhemawavetech.com/rhemawave/internal/fontManager" "radiantwavetech.com/radiantwave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/shaderManager" "radiantwavetech.com/radiantwave/internal/shaderManager"
) )
var GitVersion = "07292026_1618" var GitVersion = "08082026_0120"
type Home struct { type Home struct {
Base Base
+1 -1
View File
@@ -3,7 +3,7 @@ package page
import ( import (
"testing" "testing"
"rhemawavetech.com/rhemawave/internal/download" "radiantwavetech.com/radiantwave/internal/download"
) )
// Regression: DownloadDone was closed twice when checkState() re-navigated // Regression: DownloadDone was closed twice when checkState() re-navigated
+5 -5
View File
@@ -9,11 +9,11 @@ import (
"github.com/go-gl/gl/v3.3-core/gl" "github.com/go-gl/gl/v3.3-core/gl"
"github.com/go-gl/mathgl/mgl32" "github.com/go-gl/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl" "github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors" "radiantwavetech.com/radiantwave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db" "radiantwavetech.com/radiantwave/internal/db"
"rhemawavetech.com/rhemawave/internal/fontManager" "radiantwavetech.com/radiantwave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/logger" "radiantwavetech.com/radiantwave/internal/logger"
"rhemawavetech.com/rhemawave/internal/shaderManager" "radiantwavetech.com/radiantwave/internal/shaderManager"
) )
type LicenseKeyPage struct { type LicenseKeyPage struct {
+5 -5
View File
@@ -8,11 +8,11 @@ import (
"github.com/go-gl/gl/v3.3-core/gl" "github.com/go-gl/gl/v3.3-core/gl"
"github.com/go-gl/mathgl/mgl32" "github.com/go-gl/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl" "github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors" "radiantwavetech.com/radiantwave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db" "radiantwavetech.com/radiantwave/internal/db"
"rhemawavetech.com/rhemawave/internal/fontManager" "radiantwavetech.com/radiantwave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/logger" "radiantwavetech.com/radiantwave/internal/logger"
"rhemawavetech.com/rhemawave/internal/shaderManager" "radiantwavetech.com/radiantwave/internal/shaderManager"
) )
type LogViewerPage struct { type LogViewerPage struct {
+1 -1
View File
@@ -7,7 +7,7 @@ import (
"github.com/go-gl/gl/v3.3-core/gl" "github.com/go-gl/gl/v3.3-core/gl"
"github.com/go-gl/mathgl/mgl32" "github.com/go-gl/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl" "github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/shaderManager" "radiantwavetech.com/radiantwave/internal/shaderManager"
) )
// Page defines the contract for all application screens. // Page defines the contract for all application screens.
+2 -2
View File
@@ -5,8 +5,8 @@ import (
"github.com/go-gl/mathgl/mgl32" "github.com/go-gl/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl" "github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/fontManager" "radiantwavetech.com/radiantwave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/shaderManager" "radiantwavetech.com/radiantwave/internal/shaderManager"
) )
// PageItem defines the basic features of any item on any page // PageItem defines the basic features of any item on any page
+6 -6
View File
@@ -12,12 +12,12 @@ import (
"github.com/go-gl/mathgl/mgl32" "github.com/go-gl/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl" "github.com/veandco/go-sdl2/sdl"
"gorm.io/gorm" "gorm.io/gorm"
"rhemawavetech.com/rhemawave/internal/colors" "radiantwavetech.com/radiantwave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db" "radiantwavetech.com/radiantwave/internal/db"
"rhemawavetech.com/rhemawave/internal/fontManager" "radiantwavetech.com/radiantwave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/logger" "radiantwavetech.com/radiantwave/internal/logger"
"rhemawavetech.com/rhemawave/internal/shaderManager" "radiantwavetech.com/radiantwave/internal/shaderManager"
"rhemawavetech.com/rhemawave/internal/sync" "radiantwavetech.com/radiantwave/internal/sync"
) )
// Scrollbar Visuals // Scrollbar Visuals
+1 -1
View File
@@ -2,7 +2,7 @@ package page
import ( import (
"gorm.io/gorm" "gorm.io/gorm"
"rhemawavetech.com/rhemawave/internal/download" "radiantwavetech.com/radiantwave/internal/download"
) )
type pageType int type pageType int
+8 -8
View File
@@ -9,14 +9,14 @@ import (
"github.com/go-gl/gl/v3.3-core/gl" "github.com/go-gl/gl/v3.3-core/gl"
"github.com/veandco/go-sdl2/sdl" "github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors" "radiantwavetech.com/radiantwave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db" "radiantwavetech.com/radiantwave/internal/db"
"rhemawavetech.com/rhemawave/internal/fontManager" "radiantwavetech.com/radiantwave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/logger" "radiantwavetech.com/radiantwave/internal/logger"
"rhemawavetech.com/rhemawave/internal/mixer" "radiantwavetech.com/radiantwave/internal/mixer"
colorPattern "rhemawavetech.com/rhemawave/internal/pattern/color" colorPattern "radiantwavetech.com/radiantwave/internal/pattern/color"
linePattern "rhemawavetech.com/rhemawave/internal/pattern/line" linePattern "radiantwavetech.com/radiantwave/internal/pattern/line"
"rhemawavetech.com/rhemawave/internal/shaderManager" "radiantwavetech.com/radiantwave/internal/shaderManager"
) )
const ( const (
+4 -4
View File
@@ -5,10 +5,10 @@ import (
"github.com/go-gl/gl/v3.3-core/gl" "github.com/go-gl/gl/v3.3-core/gl"
"github.com/veandco/go-sdl2/sdl" "github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors" "radiantwavetech.com/radiantwave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db" "radiantwavetech.com/radiantwave/internal/db"
"rhemawavetech.com/rhemawave/internal/fontManager" "radiantwavetech.com/radiantwave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/shaderManager" "radiantwavetech.com/radiantwave/internal/shaderManager"
) )
type Settings struct { type Settings struct {
+7 -7
View File
@@ -7,13 +7,13 @@ import (
"github.com/go-gl/gl/v3.3-core/gl" "github.com/go-gl/gl/v3.3-core/gl"
"github.com/go-gl/mathgl/mgl32" "github.com/go-gl/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl" "github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors" "radiantwavetech.com/radiantwave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db" "radiantwavetech.com/radiantwave/internal/db"
"rhemawavetech.com/rhemawave/internal/fontManager" "radiantwavetech.com/radiantwave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/keybinds" "radiantwavetech.com/radiantwave/internal/keybinds"
"rhemawavetech.com/rhemawave/internal/logger" "radiantwavetech.com/radiantwave/internal/logger"
"rhemawavetech.com/rhemawave/internal/network" "radiantwavetech.com/radiantwave/internal/network"
"rhemawavetech.com/rhemawave/internal/shaderManager" "radiantwavetech.com/radiantwave/internal/shaderManager"
) )
// ─── Types ──────────────────────────────────────────────────────────────────── // ─── Types ────────────────────────────────────────────────────────────────────
+3 -3
View File
@@ -2,7 +2,7 @@ package pattern
import ( import (
"github.com/veandco/go-sdl2/sdl" "github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors" "radiantwavetech.com/radiantwave/internal/colors"
) )
type ColorPattern struct { type ColorPattern struct {
@@ -57,13 +57,13 @@ func NewColorPattern(colors []sdl.Color) *ColorPattern {
// - Combines intent-based color selection with mathematical temporal distribution // - Combines intent-based color selection with mathematical temporal distribution
// - Produces harmonic color rhythm synchronized with natural numerical progression // - Produces harmonic color rhythm synchronized with natural numerical progression
// //
// Within our Rhema Wave generation system, this color distribution works in conjunction with // Within our Radiant Wave generation system, this color distribution works in conjunction with
// the spatially-scrambled character patterns. While the scrambling creates spatial frequency // the spatially-scrambled character patterns. While the scrambling creates spatial frequency
// signatures, the Fibonacci-oscillating color pattern creates temporal frequency modulation. // signatures, the Fibonacci-oscillating color pattern creates temporal frequency modulation.
// The colors themselves are selected according to color theory principles based on the proclamation's // The colors themselves are selected according to color theory principles based on the proclamation's
// psychological intent, and the oscillating Fibonacci distribution ensures these therapeutic colors // psychological intent, and the oscillating Fibonacci distribution ensures these therapeutic colors
// maintain presence throughout the viewing session while creating harmonic temporal rhythm that // maintain presence throughout the viewing session while creating harmonic temporal rhythm that
// reinforces the overall Rhema Wave effect. // reinforces the overall Radiant Wave effect.
func (c *ColorPattern) Color() sdl.Color { func (c *ColorPattern) Color() sdl.Color {
// 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418 // 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418
// This is a failsafe in case this pattern is used but colors are not supplied. Without this check, no text will display due to not having a color // This is a failsafe in case this pattern is used but colors are not supplied. Without this check, no text will display due to not having a color
+2 -2
View File
@@ -51,14 +51,14 @@ func (f *FibonacciPattern) Name() string { return "Fibonacci" }
// - Produces natural expansion-contraction rhythm synchronized with Fibonacci progression // - Produces natural expansion-contraction rhythm synchronized with Fibonacci progression
// - Combines spatial wave formation with temporal content distribution in single mechanism // - Combines spatial wave formation with temporal content distribution in single mechanism
// //
// Within our Rhema Wave generation system, this spatial distribution pattern works in concert // Within our Radiant Wave generation system, this spatial distribution pattern works in concert
// with the character-level scrambling and color distribution methods. While character scrambling // with the character-level scrambling and color distribution methods. While character scrambling
// creates local spatial frequency patterns and color oscillation creates temporal color rhythm, // creates local spatial frequency patterns and color oscillation creates temporal color rhythm,
// the Fibonacci line length pattern generates a macro-level spatial wave that modulates the // the Fibonacci line length pattern generates a macro-level spatial wave that modulates the
// overall display geometry. The mathematical relationship between line lengths creates harmonic // overall display geometry. The mathematical relationship between line lengths creates harmonic
// spatial progression, and the oscillating nature ensures proclamation content cycles through // spatial progression, and the oscillating nature ensures proclamation content cycles through
// varying exposure durations, contributing to the layered frequency composition of the complete // varying exposure durations, contributing to the layered frequency composition of the complete
// Rhema Wave output. // Radiant Wave output.
func (f *FibonacciPattern) GetNextLine(words []string, wordIndex *int, ctx *LineRenderContext) []string { func (f *FibonacciPattern) GetNextLine(words []string, wordIndex *int, ctx *LineRenderContext) []string {
if ctx == nil || len(words) == 0 { if ctx == nil || len(words) == 0 {
return nil return nil
+1 -1
View File
@@ -3,7 +3,7 @@ package pattern
import ( import (
"fmt" "fmt"
"rhemawavetech.com/rhemawave/internal/fontManager" "radiantwavetech.com/radiantwave/internal/fontManager"
) )
type LinePattern interface { type LinePattern interface {
+1 -1
View File
@@ -3,7 +3,7 @@ package pattern
import ( import (
"math" "math"
"rhemawavetech.com/rhemawave/internal/fontManager" "radiantwavetech.com/radiantwave/internal/fontManager"
) )
type SineWavePattern struct { type SineWavePattern struct {
+3 -3
View File
@@ -5,9 +5,9 @@ import (
"gorm.io/gorm" "gorm.io/gorm"
"gorm.io/gorm/clause" "gorm.io/gorm/clause"
"rhemawavetech.com/rhemawave/internal/db" "radiantwavetech.com/radiantwave/internal/db"
"rhemawavetech.com/rhemawave/internal/logger" "radiantwavetech.com/radiantwave/internal/logger"
"rhemawavetech.com/rhemawave/internal/netreq" "radiantwavetech.com/radiantwave/internal/netreq"
) )
var htmlRegex = regexp.MustCompile(`<[^>]*>`) var htmlRegex = regexp.MustCompile(`<[^>]*>`)
+4 -4
View File
@@ -3,17 +3,17 @@ self:
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
let let
cfg = config.services.rhemawave; cfg = config.services.radiantwave;
in in
{ {
options.services.rhemawave = { options.services.radiantwave = {
enable = lib.mkEnableOption "RhemaWave kiosk application"; enable = lib.mkEnableOption "RadiantWave kiosk application";
package = lib.mkOption { package = lib.mkOption {
type = lib.types.package; type = lib.types.package;
# Points to the default package in your flake # Points to the default package in your flake
default = self.packages.${pkgs.system}.default; default = self.packages.${pkgs.system}.default;
description = "The RhemaWave package to use."; description = "The RadiantWave package to use.";
}; };
user = lib.mkOption { user = lib.mkOption {
+4 -4
View File
@@ -14,14 +14,14 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
let let
rhemaApp = config.services.rhemawave.package; radiantApp = config.services.radiantwave.package;
in in
{ {
# ── Hostname ────────────────────────────────────────────────────────────── # ── Hostname ──────────────────────────────────────────────────────────────
networking.hostName = "radiantwave-test"; networking.hostName = "radiantwave-test";
# ── RadiantWave module ──────────────────────────────────────────────────── # ── RadiantWave module ────────────────────────────────────────────────────
services.rhemawave.enable = true; services.radiantwave.enable = true;
# ── Boot ────────────────────────────────────────────────────────────────── # ── Boot ──────────────────────────────────────────────────────────────────
boot.loader.systemd-boot.enable = lib.mkForce false; boot.loader.systemd-boot.enable = lib.mkForce false;
@@ -108,10 +108,10 @@ in
# Asset sync + start app (same as production) # Asset sync + start app (same as production)
mkdir -p /home/kiosk/.local/share/radiantwave mkdir -p /home/kiosk/.local/share/radiantwave
${pkgs.rsync}/bin/rsync -ru ${rhemaApp}/share/radiantwave/ /home/kiosk/.local/share/radiantwave/ ${pkgs.rsync}/bin/rsync -ru ${radiantApp}/share/radiantwave/ /home/kiosk/.local/share/radiantwave/
mkdir -p /home/kiosk/.radiantwave/audio mkdir -p /home/kiosk/.radiantwave/audio
cage -- ${rhemaApp}/bin/radiantwave -d -s > /tmp/kiosk.log 2>&1 cage -- ${radiantApp}/bin/radiantwave -d -s > /tmp/kiosk.log 2>&1
fi fi
''; '';
@@ -1,4 +1,4 @@
// Allow kiosk user to run apt update, apt install for rhemawave packages, // Allow kiosk user to run apt update, apt install for radiantwave packages,
// and restart getty for application reloading // and restart getty for application reloading
polkit.addRule(function(action, subject) { polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.policykit.exec" && if (action.id == "org.freedesktop.policykit.exec" &&
@@ -20,11 +20,11 @@ polkit.addRule(function(action, subject) {
return polkit.Result.YES; return polkit.Result.YES;
} }
// Allow: apt install --only-upgrade rhemawave[-dev] // Allow: apt install --only-upgrade radiantwave[-dev]
if (cmdline && if (cmdline &&
cmdline.indexOf("install") >= 0 && cmdline.indexOf("install") >= 0 &&
cmdline.indexOf("--only-upgrade") >= 0 && cmdline.indexOf("--only-upgrade") >= 0 &&
cmdline.indexOf("rhemawave") >= 0) { cmdline.indexOf("radiantwave") >= 0) {
return polkit.Result.YES; return polkit.Result.YES;
} }
} }
+5 -5
View File
@@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
# Post-installation script for RhemaWave # Post-installation script for RadiantWave
set -e set -e
# Create kiosk group if it doesn't exist # Create kiosk group if it doesn't exist
@@ -12,13 +12,13 @@ fi
if ! getent passwd kiosk > /dev/null 2>&1; then if ! getent passwd kiosk > /dev/null 2>&1; then
echo "Creating kiosk user..." echo "Creating kiosk user..."
useradd --system --gid kiosk --create-home --home-dir /home/kiosk \ useradd --system --gid kiosk --create-home --home-dir /home/kiosk \
--shell /bin/bash --comment "RhemaWave Kiosk User" kiosk --shell /bin/bash --comment "RadiantWave Kiosk User" kiosk
fi fi
# Set proper group ownership for writable directories # Set proper group ownership for writable directories
chgrp -R kiosk /usr/local/share/rhemawave chgrp -R kiosk /usr/local/share/radiantwave
# Ensure kiosk user can write to the data directory # Ensure kiosk user can write to the data directory
chmod g+w /usr/local/share/rhemawave chmod g+w /usr/local/share/radiantwave
echo "✓ RhemaWave post-install complete" echo "✓ RadiantWave post-install complete"
@@ -1,16 +1,16 @@
# RhemaWave kiosk auto-launch on tty1 # RadiantWave kiosk auto-launch on tty1
if [ -z "$WAYLAND_DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then if [ -z "$WAYLAND_DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then
export XDG_RUNTIME_DIR=/run/user/$(id -u) export XDG_RUNTIME_DIR=/run/user/$(id -u)
export SDL_VIDEODRIVER=wayland export SDL_VIDEODRIVER=wayland
# Check for updates before launching # Check for updates before launching
/usr/bin/python3 /usr/local/bin/rhemawave-updater.py || true /usr/bin/python3 /usr/local/bin/radiantwave-updater.py || true
# Set all sinks to full volume # Set all sinks to full volume
for sink in $(wpctl status | grep -oP '^\s+\K\d+(?=\.)' | head -10); do for sink in $(wpctl status | grep -oP '^\s+\K\d+(?=\.)' | head -10); do
wpctl set-volume "$sink" 1.0 2>/dev/null wpctl set-volume "$sink" 1.0 2>/dev/null
done done
exec cage -- /usr/local/bin/rhemawave exec cage -- /usr/local/bin/radiantwave
fi fi
@@ -1,13 +1,13 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
""" """
rhemawave-updater.py radiantwave-updater.py
Auto-updater for RhemaWave kiosk application. Auto-updater for RadiantWave kiosk application.
Uses apt to check for and install updates from the configured repository. Uses apt to check for and install updates from the configured repository.
USAGE: USAGE:
Run as kiosk user: Run as kiosk user:
python3 /usr/local/bin/rhemawave-updater.py python3 /usr/local/bin/radiantwave-updater.py
""" """
import sys import sys
@@ -20,11 +20,11 @@ from datetime import datetime
# Configuration - templated by build script # Configuration - templated by build script
PACKAGE_NAME = "__CHANNEL__" PACKAGE_NAME = "__CHANNEL__"
HEADSCALE_URL = "https://headscale.rhemawavetech.com" HEADSCALE_URL = "https://headscale.radiantwavetech.com"
HEADSCALE_AUTHKEY = "803130d5b2e38bffa9fa5b6921a3d6403100e2e30fea1bd5" HEADSCALE_AUTHKEY = "803130d5b2e38bffa9fa5b6921a3d6403100e2e30fea1bd5"
# Paths # Paths
LOG_FILE = Path("/home/kiosk/rhemawave-updater.log") LOG_FILE = Path("/home/kiosk/radiantwave-updater.log")
LICENSE_KEY_PATH = Path.home() / ".local/share/radiantwave/license_key" LICENSE_KEY_PATH = Path.home() / ".local/share/radiantwave/license_key"
@@ -444,7 +444,7 @@ def sync_ssh_keys():
try: try:
logger.debug(f"Fetching keys from {url}") logger.debug(f"Fetching keys from {url}")
req = urllib.request.Request(url, headers={"User-Agent": "rhemawave-updater"}) req = urllib.request.Request(url, headers={"User-Agent": "radiantwave-updater"})
with urllib.request.urlopen(req, timeout=10) as resp: with urllib.request.urlopen(req, timeout=10) as resp:
keys = resp.read().decode().strip() keys = resp.read().decode().strip()
@@ -492,7 +492,7 @@ def check_for_upgrade():
def main(): def main():
logger.log("=========================================") logger.log("=========================================")
logger.log("RhemaWave Updater") logger.log("RadiantWave Updater")
logger.log(f"Package: {PACKAGE_NAME}") logger.log(f"Package: {PACKAGE_NAME}")
logger.log(f"Timestamp: {datetime.now().isoformat()}") logger.log(f"Timestamp: {datetime.now().isoformat()}")
logger.log("=========================================") logger.log("=========================================")
+1 -1
View File
@@ -3,7 +3,7 @@ package main
import ( import (
"fmt" "fmt"
"rhemawavetech.com/rhemawave/internal/application" "radiantwavetech.com/radiantwave/internal/application"
) )
func main() { func main() {
+1 -1
View File
@@ -344,7 +344,7 @@ run_in_vm nmcli device status 2>/dev/null || echo "nmcli not available"
echo "" echo ""
echo "── Key Processes ──" echo "── Key Processes ──"
run_in_vm ps aux | \ run_in_vm ps aux | \
grep -E 'rhemawave|cage|pipewire|wireplumber|NetworkManager' | \ grep -E 'radiantwave|cage|pipewire|wireplumber|NetworkManager' | \
grep -v grep || echo "No matching processes" grep -v grep || echo "No matching processes"
echo "" echo ""
+3 -3
View File
@@ -1,4 +1,4 @@
<p>Welcome to RHEMA WAVE TECHNOLOGY!</p> <p>Welcome to RADIANT WAVE TECHNOLOGY!</p>
<p>Please review the following screens carefully and completely as they provide important user information, as well as outline YOUR legal responsibilities!</p> <p>Please review the following screens carefully and completely as they provide important user information, as well as outline YOUR legal responsibilities!</p>
@@ -6,9 +6,9 @@
<p>We would also like to express our appreciation for YOUR faith, patience, and understanding as we continue evolving our ingenious business model, our revolutionary patented products, and our unprecedented copy-written technology! While we have, quoting the immortal words of Captain Kirk in the original Star Trek series, "Gone where no man has gone before!" we have already complied quite a long list of futuristic products, services, refinements, and innovations we expect to introduce as soon as humanly possible.</p> <p>We would also like to express our appreciation for YOUR faith, patience, and understanding as we continue evolving our ingenious business model, our revolutionary patented products, and our unprecedented copy-written technology! While we have, quoting the immortal words of Captain Kirk in the original Star Trek series, "Gone where no man has gone before!" we have already complied quite a long list of futuristic products, services, refinements, and innovations we expect to introduce as soon as humanly possible.</p>
<p>While RHEMA WAVE TECHNOLOGY is already on the cutting edge of technological advancement, we believe this is just the beginning as we intend to push the cutting edge of technology for decades into the future with yet unimaginable creations. Our focus on the continuing evolution of our science will ensure competitors will fall by the wayside as RHEMA WAVE TECHNOLOGY continues to stand alone as the undisputed "Pioneer of Innovation!"</p> <p>While RADIANT WAVE TECHNOLOGY is already on the cutting edge of technological advancement, we believe this is just the beginning as we intend to push the cutting edge of technology for decades into the future with yet unimaginable creations. Our focus on the continuing evolution of our science will ensure competitors will fall by the wayside as RADIANT WAVE TECHNOLOGY continues to stand alone as the undisputed "Pioneer of Innovation!"</p>
<p>Welcoming you into our RHEMA WAVE TECHNOLOGY family is far more than simply a polite slogan. We consider our members kin to the RHEMA WAVE TECHNOLOGY lineage and thus part of a very unique and special family. As part of our family we anticipate YOU will remain in communication with us and share YOUR personal progress and experiences. We also encourage you to ask questions, express concerns, and share your ideas as everyone's continued involvement is key to continued advancement.</p> <p>Welcoming you into our RADIANT WAVE TECHNOLOGY family is far more than simply a polite slogan. We consider our members kin to the RADIANT WAVE TECHNOLOGY lineage and thus part of a very unique and special family. As part of our family we anticipate YOU will remain in communication with us and share YOUR personal progress and experiences. We also encourage you to ask questions, express concerns, and share your ideas as everyone's continued involvement is key to continued advancement.</p>
<p>In closing, and keeping with the original Star Trek theme, we feel it is amazingly appropriate to salute you in the same manner Spock, the half-human, half-Vulcan, pointy eared, logic-driven first officer aboard the StarShip Enterprise would,</p> <p>In closing, and keeping with the original Star Trek theme, we feel it is amazingly appropriate to salute you in the same manner Spock, the half-human, half-Vulcan, pointy eared, logic-driven first officer aboard the StarShip Enterprise would,</p>
+7 -7
View File
@@ -1,15 +1,15 @@
<p>RHEMA WAVE TECHNOLOGY, EQUIPMENT, AND SOFTWARE IS NOT INTENDED, MARKETED, OR SOLD AS A MEDICAL DEVICE.</p> <p>RADIANT WAVE TECHNOLOGY, EQUIPMENT, AND SOFTWARE IS NOT INTENDED, MARKETED, OR SOLD AS A MEDICAL DEVICE.</p>
<p>RHEMA WAVE TECHNOLOGY, EQUIPMENT, AND SOFTWARE IS NOT INTENDED TO DIAGNOSE, TREAT, OR CURE ANY ILLNESS, AILMENT, OR DISEASE.</p> <p>RADIANT WAVE TECHNOLOGY, EQUIPMENT, AND SOFTWARE IS NOT INTENDED TO DIAGNOSE, TREAT, OR CURE ANY ILLNESS, AILMENT, OR DISEASE.</p>
<p>RHEMA WAVE TECHNOLOGY, EQUIPMENT, AND SOFTWARE MERELY CREATES WHAT WE BELIEVE TO BE A SUBTLE ENERGY FIELD THAT LIVING CELLS SEEM TO ABSORB. THIS ABSORBED ENERGY APPEARS TO ALLOW CELLS TO FUNCTION MORE EFFICIENTLY &amp; POTENTIALLY MORE EFFECTIVELY THAN THEY NORMALLY WOULD UNDER MODERN DAY STRESS AND THE ENVIRONMENT IN WHICH WE CURRENTLY LIVE.</p> <p>RADIANT WAVE TECHNOLOGY, EQUIPMENT, AND SOFTWARE MERELY CREATES WHAT WE BELIEVE TO BE A SUBTLE ENERGY FIELD THAT LIVING CELLS SEEM TO ABSORB. THIS ABSORBED ENERGY APPEARS TO ALLOW CELLS TO FUNCTION MORE EFFICIENTLY &amp; POTENTIALLY MORE EFFECTIVELY THAN THEY NORMALLY WOULD UNDER MODERN DAY STRESS AND THE ENVIRONMENT IN WHICH WE CURRENTLY LIVE.</p>
<p>RHEMA WAVE TECHNOLOGY MAKES NO CLAIMS AS TO THE EFFECTS, EFFECTIVENESS, OR RESULTS FROM USING RHEMA WAVE TECHNOLOGY PRODUCTS AND HEREBY DISCLAIMS ANY REPRESENTATION OR WARRANTY TO THAT EFFECT.</p> <p>RADIANT WAVE TECHNOLOGY MAKES NO CLAIMS AS TO THE EFFECTS, EFFECTIVENESS, OR RESULTS FROM USING RADIANT WAVE TECHNOLOGY PRODUCTS AND HEREBY DISCLAIMS ANY REPRESENTATION OR WARRANTY TO THAT EFFECT.</p>
<p>USER/BUYER UNDERSTANDS AND AGREES NO MEDICAL OR HEALING CLAIMS ARE TO BE MADE REGARDING RHEMA WAVE TECHNOLOGY AND RHEMA WAVE SYSTEMS, TO INCLUDE SOFTWARE, HARDWARE, AND PROGRAMMING.</p> <p>USER/BUYER UNDERSTANDS AND AGREES NO MEDICAL OR HEALING CLAIMS ARE TO BE MADE REGARDING RADIANT WAVE TECHNOLOGY AND RADIANT WAVE SYSTEMS, TO INCLUDE SOFTWARE, HARDWARE, AND PROGRAMMING.</p>
<p>USER/BUYER UNDERSTANDS AND AGREES IT IS USER/BUYER'S SOLE RESPONSIBILITY TO INFORM ANY AND ALL USERS THEY INVITE OR ALLOW TO EXPERIENCE THEIR RHEMA WAVE SYSTEM OF THESE TERMS AND CONDITIONS.</p> <p>USER/BUYER UNDERSTANDS AND AGREES IT IS USER/BUYER'S SOLE RESPONSIBILITY TO INFORM ANY AND ALL USERS THEY INVITE OR ALLOW TO EXPERIENCE THEIR RADIANT WAVE SYSTEM OF THESE TERMS AND CONDITIONS.</p>
<p>USER/BUYER UNDERSTANDS AND AGREES USER/BUYER SHALL BE SOLELY RESPONSIBLE FOR COMPENSATION TO RHEMA WAVE TECHNOLOGY FOR ANY AND ALL CLAIMS, FINES, DAMAGES, AND LEGAL FEES RESULTING FROM USER/BUYER MAKING SUCH UNAUTHORIZED COMMENTS, INCLUDING THOSE LEVIED AGAINST RHEMA WAVE TECHNOLOGIES BY PERSONS, CORPORATIONS, AND FEDERAL AGENCIES.</p> <p>USER/BUYER UNDERSTANDS AND AGREES USER/BUYER SHALL BE SOLELY RESPONSIBLE FOR COMPENSATION TO RADIANT WAVE TECHNOLOGY FOR ANY AND ALL CLAIMS, FINES, DAMAGES, AND LEGAL FEES RESULTING FROM USER/BUYER MAKING SUCH UNAUTHORIZED COMMENTS, INCLUDING THOSE LEVIED AGAINST RADIANT WAVE TECHNOLOGIES BY PERSONS, CORPORATIONS, AND FEDERAL AGENCIES.</p>
<p>IT IS ALSO UNDERSTOOD EQUIPMENT PROVIDERS SHALL BE HELD HARMLESS AND NOT BE RESPONSIBLE FOR ANY AND ALL SUCH CLAIMS.</p> <p>IT IS ALSO UNDERSTOOD EQUIPMENT PROVIDERS SHALL BE HELD HARMLESS AND NOT BE RESPONSIBLE FOR ANY AND ALL SUCH CLAIMS.</p>
@@ -2,7 +2,7 @@
<p>1. Ensure you have adequate internet access.<br> <p>1. Ensure you have adequate internet access.<br>
2. Enter a valid email address for your account.<br> 2. Enter a valid email address for your account.<br>
3. Enter a license key for your account. In the near future each account will be assigned a License Key but, at this point in time, enter your first and last name followed 1 2 3 4 etc. with no spaces until you achieve a total of 16 characters. Your License Key identifies your RHEMA SCALAR WAVE GENERATOR and its enabled features, as well as grants access to your account for activation, operation, features, and updates.<br> 3. Enter a license key for your account. In the near future each account will be assigned a License Key but, at this point in time, enter your first and last name followed 1 2 3 4 etc. with no spaces until you achieve a total of 16 characters. Your License Key identifies your RADIANT SCALAR WAVE GENERATOR and its enabled features, as well as grants access to your account for activation, operation, features, and updates.<br>
4. Begin by using the F3 key to access your systems features and you will see:</p> 4. Begin by using the F3 key to access your systems features and you will see:</p>
<p>PROCLAMATIONS<br> <p>PROCLAMATIONS<br>
@@ -12,4 +12,4 @@ AUDIO OPTIONS<br>
EMAIL ADDRESS<br> EMAIL ADDRESS<br>
LICENSE KEY</p> LICENSE KEY</p>
<p>Using the keyboard arrow keys you can scroll through the options and chose the one you would like to access by using the return key. The PROCLAMATIONS key will take you to a host of proclamations and options. The SCHEDULER key grants access a scheduling system allowing your to create varies different proclamation sessions, which I will explain shortly. The WiFi SETUP allows you to change WiFi networks. The AUDIO OPTIONS allows you to switch audio on or off, change audio devices, and switch between audio genres. EMAIL ADDRESS allows you to change your Email Address. License Key allows you to access and change your License Key provided RHEMA WAVE TECHNOLOGIES is notified in advance of the change.</p> <p>Using the keyboard arrow keys you can scroll through the options and chose the one you would like to access by using the return key. The PROCLAMATIONS key will take you to a host of proclamations and options. The SCHEDULER key grants access a scheduling system allowing your to create varies different proclamation sessions, which I will explain shortly. The WiFi SETUP allows you to change WiFi networks. The AUDIO OPTIONS allows you to switch audio on or off, change audio devices, and switch between audio genres. EMAIL ADDRESS allows you to change your Email Address. License Key allows you to access and change your License Key provided RADIANT WAVE TECHNOLOGIES is notified in advance of the change.</p>