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",
"request": "launch",
"mode": "debug",
"program": "rhemawave.go",
"program": "radiantwave.go",
"env": {
"DEBUGINFOD_URLS": ""
}
+2 -2
View File
@@ -10,7 +10,7 @@ Dev shell via direnv (`use flake` in `.envrc`). Inside the nix dev shell:
```sh
# Build
go build -o bin/radiantwave radiantwave.go
go build -o bin/radiantwave .
# Run
./bin/radiantwave
@@ -48,7 +48,7 @@ Both run `nix build -L` on a self-hosted runner (`neils-server-runner`).
## 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
- **Pages**: `internal/page/` — router pattern with page interface (`page.go`)
- **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=
4. CI: Run =nix build= to verify no errors
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)
8. Merge the pull request to =dev= after CI passes
+1 -1
View File
@@ -1,5 +1,5 @@
* 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
- [ ] VM Starts
+1 -1
View File
@@ -35,7 +35,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
### Changed (Major Refactors)
- Mixer package: inject audio backend dependencies for testability
- 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
- checkState() skips re-navigation when transitioning between HOME-mapped states
- network.init() logs warning instead of crashing when D-Bus is unavailable
+3 -4
View File
@@ -69,11 +69,10 @@
postInstall = ''
mkdir -p $out/share/radiantwave
cp -r share/radiantwave/* $out/share/radiantwave/
mv $out/bin/rhemawave $out/bin/radiantwave
'';
meta = with pkgs.lib; {
description = "RhemaWave kiosk application";
description = "RadiantWave kiosk application";
license = licenses.unfree;
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_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 " CGO_ENABLED=1"
echo ""
echo "Build: go build -o bin/radiantwave radiantwave.go"
echo "Build: go build -o 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
+15 -15
View File
@@ -11,19 +11,19 @@ import (
"github.com/veandco/go-sdl2/sdl"
"github.com/veandco/go-sdl2/ttf"
"gorm.io/gorm"
"rhemawavetech.com/rhemawave/internal/assets"
"rhemawavetech.com/rhemawave/internal/db"
"rhemawavetech.com/rhemawave/internal/download"
"rhemawavetech.com/rhemawave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/graphics"
"rhemawavetech.com/rhemawave/internal/keybinds"
"rhemawavetech.com/rhemawave/internal/license"
"rhemawavetech.com/rhemawave/internal/logger"
"rhemawavetech.com/rhemawave/internal/mixer"
"rhemawavetech.com/rhemawave/internal/network"
"rhemawavetech.com/rhemawave/internal/page"
"rhemawavetech.com/rhemawave/internal/shaderManager"
"rhemawavetech.com/rhemawave/internal/sync"
"radiantwavetech.com/radiantwave/internal/assets"
"radiantwavetech.com/radiantwave/internal/db"
"radiantwavetech.com/radiantwave/internal/download"
"radiantwavetech.com/radiantwave/internal/fontManager"
"radiantwavetech.com/radiantwave/internal/graphics"
"radiantwavetech.com/radiantwave/internal/keybinds"
"radiantwavetech.com/radiantwave/internal/license"
"radiantwavetech.com/radiantwave/internal/logger"
"radiantwavetech.com/radiantwave/internal/mixer"
"radiantwavetech.com/radiantwave/internal/network"
"radiantwavetech.com/radiantwave/internal/page"
"radiantwavetech.com/radiantwave/internal/shaderManager"
"radiantwavetech.com/radiantwave/internal/sync"
)
const (
@@ -31,7 +31,7 @@ const (
openGLMajorVersion = 3
openGLMinorVersion = 3
// volumeStepSize = 16
// apiURL = "https://portal.rhemawavetech.com/api/v1"
// apiURL = "https://portal.radiantwavetech.com/api/v1"
)
type State int
@@ -346,7 +346,7 @@ func (app *Application) initializeSDLAndOpenGL() (W, H int32) {
logger.Info("Creating window")
window, err := sdl.CreateWindow(
"Rhema Wave",
"Radiant Wave",
sdl.WINDOWPOS_UNDEFINED,
sdl.WINDOWPOS_UNDEFINED,
displayMode.W,
+3 -3
View File
@@ -5,8 +5,8 @@ import (
"time"
"gorm.io/gorm"
"rhemawavetech.com/rhemawave/internal/db"
"rhemawavetech.com/rhemawave/internal/page"
"radiantwavetech.com/radiantwave/internal/db"
"radiantwavetech.com/radiantwave/internal/page"
)
// 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
// radiantwave path, not the legacy rhemawave name.
// radiantwave path, not the legacy radiantwave name.
func TestDataDirFor(t *testing.T) {
got := DataDirFor("/home/kiosk")
want := "/home/kiosk/.local/share/radiantwave"
+2 -2
View File
@@ -11,8 +11,8 @@ import (
"strings"
"gorm.io/gorm"
"rhemawavetech.com/rhemawave/internal/db"
"rhemawavetech.com/rhemawave/internal/logger"
"radiantwavetech.com/radiantwave/internal/db"
"radiantwavetech.com/radiantwave/internal/logger"
)
// DownloadStatus holds information related to downloads and is
+2 -2
View File
@@ -11,8 +11,8 @@ import (
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"rhemawavetech.com/rhemawave/internal/db"
"rhemawavetech.com/rhemawave/internal/download"
"radiantwavetech.com/radiantwave/internal/db"
"radiantwavetech.com/radiantwave/internal/download"
)
func md5Hex(data []byte) string {
+5 -5
View File
@@ -11,9 +11,9 @@ import (
"github.com/go-gl/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl"
"github.com/veandco/go-sdl2/ttf"
"rhemawavetech.com/rhemawave/internal/db"
"rhemawavetech.com/rhemawave/internal/graphics"
"rhemawavetech.com/rhemawave/internal/shaderManager"
"radiantwavetech.com/radiantwave/internal/db"
"radiantwavetech.com/radiantwave/internal/graphics"
"radiantwavetech.com/radiantwave/internal/shaderManager"
)
// 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
// - 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
// 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
// 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 {
if surface.W < 8 || surface.H < 8 {
return nil
+1 -1
View File
@@ -7,7 +7,7 @@ import (
"time"
"gorm.io/gorm"
"rhemawavetech.com/rhemawave/internal/db"
"radiantwavetech.com/radiantwave/internal/db"
)
// ─── Level ───────────────────────────────────────────────────────────────────
+2 -2
View File
@@ -8,8 +8,8 @@ import (
"github.com/veandco/go-sdl2/mix"
"github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/db"
"rhemawavetech.com/rhemawave/internal/logger"
"radiantwavetech.com/radiantwave/internal/db"
"radiantwavetech.com/radiantwave/internal/logger"
)
var (
+1 -1
View File
@@ -4,7 +4,7 @@ import (
"math"
"testing"
"rhemawavetech.com/rhemawave/internal/mixer"
"radiantwavetech.com/radiantwave/internal/mixer"
)
func TestSetVolume(t *testing.T) {
+1 -1
View File
@@ -9,7 +9,7 @@ import (
gonm "github.com/Wifx/gonetworkmanager/v2"
"github.com/google/uuid"
"rhemawavetech.com/rhemawave/internal/logger"
"radiantwavetech.com/radiantwave/internal/logger"
)
// ─── Public types ─────────────────────────────────────────────────────────────
+6 -6
View File
@@ -7,12 +7,12 @@ import (
"github.com/go-gl/gl/v3.3-core/gl"
"github.com/go-gl/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db"
"rhemawavetech.com/rhemawave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/logger"
"rhemawavetech.com/rhemawave/internal/mixer"
"rhemawavetech.com/rhemawave/internal/shaderManager"
"radiantwavetech.com/radiantwave/internal/colors"
"radiantwavetech.com/radiantwave/internal/db"
"radiantwavetech.com/radiantwave/internal/fontManager"
"radiantwavetech.com/radiantwave/internal/logger"
"radiantwavetech.com/radiantwave/internal/mixer"
"radiantwavetech.com/radiantwave/internal/shaderManager"
)
const systemDefaultDeviceName = "System Default"
+1 -1
View File
@@ -3,7 +3,7 @@ package page
import (
"testing"
"rhemawavetech.com/rhemawave/internal/mixer"
"radiantwavetech.com/radiantwave/internal/mixer"
)
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/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db"
"rhemawavetech.com/rhemawave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/logger"
"rhemawavetech.com/rhemawave/internal/mixer"
"rhemawavetech.com/rhemawave/internal/shaderManager"
"radiantwavetech.com/radiantwave/internal/colors"
"radiantwavetech.com/radiantwave/internal/db"
"radiantwavetech.com/radiantwave/internal/fontManager"
"radiantwavetech.com/radiantwave/internal/logger"
"radiantwavetech.com/radiantwave/internal/mixer"
"radiantwavetech.com/radiantwave/internal/shaderManager"
)
// 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/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db"
"rhemawavetech.com/rhemawave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/logger"
"rhemawavetech.com/rhemawave/internal/shaderManager"
"radiantwavetech.com/radiantwave/internal/colors"
"radiantwavetech.com/radiantwave/internal/db"
"radiantwavetech.com/radiantwave/internal/fontManager"
"radiantwavetech.com/radiantwave/internal/logger"
"radiantwavetech.com/radiantwave/internal/shaderManager"
)
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/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db"
"rhemawavetech.com/rhemawave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/shaderManager"
"radiantwavetech.com/radiantwave/internal/colors"
"radiantwavetech.com/radiantwave/internal/db"
"radiantwavetech.com/radiantwave/internal/fontManager"
"radiantwavetech.com/radiantwave/internal/shaderManager"
)
// 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/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db"
"rhemawavetech.com/rhemawave/internal/download"
"rhemawavetech.com/rhemawave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/shaderManager"
"radiantwavetech.com/radiantwave/internal/colors"
"radiantwavetech.com/radiantwave/internal/db"
"radiantwavetech.com/radiantwave/internal/download"
"radiantwavetech.com/radiantwave/internal/fontManager"
"radiantwavetech.com/radiantwave/internal/shaderManager"
)
var GitVersion = "07292026_1618"
var GitVersion = "08082026_0120"
type Home struct {
Base
+1 -1
View File
@@ -3,7 +3,7 @@ package page
import (
"testing"
"rhemawavetech.com/rhemawave/internal/download"
"radiantwavetech.com/radiantwave/internal/download"
)
// 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/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db"
"rhemawavetech.com/rhemawave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/logger"
"rhemawavetech.com/rhemawave/internal/shaderManager"
"radiantwavetech.com/radiantwave/internal/colors"
"radiantwavetech.com/radiantwave/internal/db"
"radiantwavetech.com/radiantwave/internal/fontManager"
"radiantwavetech.com/radiantwave/internal/logger"
"radiantwavetech.com/radiantwave/internal/shaderManager"
)
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/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db"
"rhemawavetech.com/rhemawave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/logger"
"rhemawavetech.com/rhemawave/internal/shaderManager"
"radiantwavetech.com/radiantwave/internal/colors"
"radiantwavetech.com/radiantwave/internal/db"
"radiantwavetech.com/radiantwave/internal/fontManager"
"radiantwavetech.com/radiantwave/internal/logger"
"radiantwavetech.com/radiantwave/internal/shaderManager"
)
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/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/shaderManager"
"radiantwavetech.com/radiantwave/internal/shaderManager"
)
// 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/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/shaderManager"
"radiantwavetech.com/radiantwave/internal/fontManager"
"radiantwavetech.com/radiantwave/internal/shaderManager"
)
// 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/veandco/go-sdl2/sdl"
"gorm.io/gorm"
"rhemawavetech.com/rhemawave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db"
"rhemawavetech.com/rhemawave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/logger"
"rhemawavetech.com/rhemawave/internal/shaderManager"
"rhemawavetech.com/rhemawave/internal/sync"
"radiantwavetech.com/radiantwave/internal/colors"
"radiantwavetech.com/radiantwave/internal/db"
"radiantwavetech.com/radiantwave/internal/fontManager"
"radiantwavetech.com/radiantwave/internal/logger"
"radiantwavetech.com/radiantwave/internal/shaderManager"
"radiantwavetech.com/radiantwave/internal/sync"
)
// Scrollbar Visuals
+1 -1
View File
@@ -2,7 +2,7 @@ package page
import (
"gorm.io/gorm"
"rhemawavetech.com/rhemawave/internal/download"
"radiantwavetech.com/radiantwave/internal/download"
)
type pageType int
+8 -8
View File
@@ -9,14 +9,14 @@ import (
"github.com/go-gl/gl/v3.3-core/gl"
"github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db"
"rhemawavetech.com/rhemawave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/logger"
"rhemawavetech.com/rhemawave/internal/mixer"
colorPattern "rhemawavetech.com/rhemawave/internal/pattern/color"
linePattern "rhemawavetech.com/rhemawave/internal/pattern/line"
"rhemawavetech.com/rhemawave/internal/shaderManager"
"radiantwavetech.com/radiantwave/internal/colors"
"radiantwavetech.com/radiantwave/internal/db"
"radiantwavetech.com/radiantwave/internal/fontManager"
"radiantwavetech.com/radiantwave/internal/logger"
"radiantwavetech.com/radiantwave/internal/mixer"
colorPattern "radiantwavetech.com/radiantwave/internal/pattern/color"
linePattern "radiantwavetech.com/radiantwave/internal/pattern/line"
"radiantwavetech.com/radiantwave/internal/shaderManager"
)
const (
+4 -4
View File
@@ -5,10 +5,10 @@ import (
"github.com/go-gl/gl/v3.3-core/gl"
"github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db"
"rhemawavetech.com/rhemawave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/shaderManager"
"radiantwavetech.com/radiantwave/internal/colors"
"radiantwavetech.com/radiantwave/internal/db"
"radiantwavetech.com/radiantwave/internal/fontManager"
"radiantwavetech.com/radiantwave/internal/shaderManager"
)
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/mathgl/mgl32"
"github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors"
"rhemawavetech.com/rhemawave/internal/db"
"rhemawavetech.com/rhemawave/internal/fontManager"
"rhemawavetech.com/rhemawave/internal/keybinds"
"rhemawavetech.com/rhemawave/internal/logger"
"rhemawavetech.com/rhemawave/internal/network"
"rhemawavetech.com/rhemawave/internal/shaderManager"
"radiantwavetech.com/radiantwave/internal/colors"
"radiantwavetech.com/radiantwave/internal/db"
"radiantwavetech.com/radiantwave/internal/fontManager"
"radiantwavetech.com/radiantwave/internal/keybinds"
"radiantwavetech.com/radiantwave/internal/logger"
"radiantwavetech.com/radiantwave/internal/network"
"radiantwavetech.com/radiantwave/internal/shaderManager"
)
// ─── Types ────────────────────────────────────────────────────────────────────
+3 -3
View File
@@ -2,7 +2,7 @@ package pattern
import (
"github.com/veandco/go-sdl2/sdl"
"rhemawavetech.com/rhemawave/internal/colors"
"radiantwavetech.com/radiantwave/internal/colors"
)
type ColorPattern struct {
@@ -57,13 +57,13 @@ func NewColorPattern(colors []sdl.Color) *ColorPattern {
// - Combines intent-based color selection with mathematical temporal distribution
// - 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
// 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
// psychological intent, and the oscillating Fibonacci distribution ensures these therapeutic colors
// 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 {
// 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
+2 -2
View File
@@ -51,14 +51,14 @@ func (f *FibonacciPattern) Name() string { return "Fibonacci" }
// - Produces natural expansion-contraction rhythm synchronized with Fibonacci progression
// - 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
// 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
// overall display geometry. The mathematical relationship between line lengths creates harmonic
// spatial progression, and the oscillating nature ensures proclamation content cycles through
// 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 {
if ctx == nil || len(words) == 0 {
return nil
+1 -1
View File
@@ -3,7 +3,7 @@ package pattern
import (
"fmt"
"rhemawavetech.com/rhemawave/internal/fontManager"
"radiantwavetech.com/radiantwave/internal/fontManager"
)
type LinePattern interface {
+1 -1
View File
@@ -3,7 +3,7 @@ package pattern
import (
"math"
"rhemawavetech.com/rhemawave/internal/fontManager"
"radiantwavetech.com/radiantwave/internal/fontManager"
)
type SineWavePattern struct {
+3 -3
View File
@@ -5,9 +5,9 @@ import (
"gorm.io/gorm"
"gorm.io/gorm/clause"
"rhemawavetech.com/rhemawave/internal/db"
"rhemawavetech.com/rhemawave/internal/logger"
"rhemawavetech.com/rhemawave/internal/netreq"
"radiantwavetech.com/radiantwave/internal/db"
"radiantwavetech.com/radiantwave/internal/logger"
"radiantwavetech.com/radiantwave/internal/netreq"
)
var htmlRegex = regexp.MustCompile(`<[^>]*>`)
+4 -4
View File
@@ -3,17 +3,17 @@ self:
{ config, lib, pkgs, ... }:
let
cfg = config.services.rhemawave;
cfg = config.services.radiantwave;
in
{
options.services.rhemawave = {
enable = lib.mkEnableOption "RhemaWave kiosk application";
options.services.radiantwave = {
enable = lib.mkEnableOption "RadiantWave kiosk application";
package = lib.mkOption {
type = lib.types.package;
# Points to the default package in your flake
default = self.packages.${pkgs.system}.default;
description = "The RhemaWave package to use.";
description = "The RadiantWave package to use.";
};
user = lib.mkOption {
+4 -4
View File
@@ -14,14 +14,14 @@
{ config, lib, pkgs, ... }:
let
rhemaApp = config.services.rhemawave.package;
radiantApp = config.services.radiantwave.package;
in
{
# ── Hostname ──────────────────────────────────────────────────────────────
networking.hostName = "radiantwave-test";
# ── RadiantWave module ────────────────────────────────────────────────────
services.rhemawave.enable = true;
services.radiantwave.enable = true;
# ── Boot ──────────────────────────────────────────────────────────────────
boot.loader.systemd-boot.enable = lib.mkForce false;
@@ -108,10 +108,10 @@ in
# Asset sync + start app (same as production)
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
cage -- ${rhemaApp}/bin/radiantwave -d -s > /tmp/kiosk.log 2>&1
cage -- ${radiantApp}/bin/radiantwave -d -s > /tmp/kiosk.log 2>&1
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
polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.policykit.exec" &&
@@ -20,11 +20,11 @@ polkit.addRule(function(action, subject) {
return polkit.Result.YES;
}
// Allow: apt install --only-upgrade rhemawave[-dev]
// Allow: apt install --only-upgrade radiantwave[-dev]
if (cmdline &&
cmdline.indexOf("install") >= 0 &&
cmdline.indexOf("--only-upgrade") >= 0 &&
cmdline.indexOf("rhemawave") >= 0) {
cmdline.indexOf("radiantwave") >= 0) {
return polkit.Result.YES;
}
}
+5 -5
View File
@@ -1,5 +1,5 @@
#!/bin/bash
# Post-installation script for RhemaWave
# Post-installation script for RadiantWave
set -e
# Create kiosk group if it doesn't exist
@@ -12,13 +12,13 @@ fi
if ! getent passwd kiosk > /dev/null 2>&1; then
echo "Creating kiosk user..."
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
# 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
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
export XDG_RUNTIME_DIR=/run/user/$(id -u)
export SDL_VIDEODRIVER=wayland
# 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
for sink in $(wpctl status | grep -oP '^\s+\K\d+(?=\.)' | head -10); do
wpctl set-volume "$sink" 1.0 2>/dev/null
done
exec cage -- /usr/local/bin/rhemawave
exec cage -- /usr/local/bin/radiantwave
fi
@@ -1,13 +1,13 @@
#!/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.
USAGE:
Run as kiosk user:
python3 /usr/local/bin/rhemawave-updater.py
python3 /usr/local/bin/radiantwave-updater.py
"""
import sys
@@ -20,11 +20,11 @@ from datetime import datetime
# Configuration - templated by build script
PACKAGE_NAME = "__CHANNEL__"
HEADSCALE_URL = "https://headscale.rhemawavetech.com"
HEADSCALE_URL = "https://headscale.radiantwavetech.com"
HEADSCALE_AUTHKEY = "803130d5b2e38bffa9fa5b6921a3d6403100e2e30fea1bd5"
# 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"
@@ -444,7 +444,7 @@ def sync_ssh_keys():
try:
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:
keys = resp.read().decode().strip()
@@ -492,7 +492,7 @@ def check_for_upgrade():
def main():
logger.log("=========================================")
logger.log("RhemaWave Updater")
logger.log("RadiantWave Updater")
logger.log(f"Package: {PACKAGE_NAME}")
logger.log(f"Timestamp: {datetime.now().isoformat()}")
logger.log("=========================================")
+1 -1
View File
@@ -3,7 +3,7 @@ package main
import (
"fmt"
"rhemawavetech.com/rhemawave/internal/application"
"radiantwavetech.com/radiantwave/internal/application"
)
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 "── Key Processes ──"
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"
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>
@@ -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>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>
+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>
@@ -2,7 +2,7 @@
<p>1. Ensure you have adequate internet access.<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>
<p>PROCLAMATIONS<br>
@@ -12,4 +12,4 @@ AUDIO OPTIONS<br>
EMAIL ADDRESS<br>
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>