Skip to content
This repository was archived by the owner on Feb 15, 2026. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
77e14d4
Add all 137 emojis as high-quality 128x128 PNGs
Jan 30, 2026
4ed98c4
Fix emojis: use rsvg-convert for high-quality SVG to PNG
Jan 30, 2026
2bd623c
Fix 200, 404, 500, energy_drink, c64 emojis - clearer designs
Jan 30, 2026
591029f
Fix arcade, blockchain, binary, backdoor, chaos, chmod, cloud, code e…
Jan 30, 2026
db9d417
Fix 32+ emojis - cleaner, simpler designs
Jan 30, 2026
0b1e1f1
Add OpenMoji emojis (CC BY-SA 4.0) - professional quality
Jan 30, 2026
2402d6a
Sync all 155 emojis - PNG
Jan 30, 2026
49ebc6d
Add OpenMoji attribution to README (CC BY-SA 4.0)
Jan 30, 2026
2c92cba
Replace custom emojis with OpenMoji (CC BY-SA 4.0) - kept political a…
Jan 30, 2026
91ac314
Add percentage emojis (49%, 50%, 51%, 100%) and fix 500 error emoji
Jan 30, 2026
4e88859
Add 502 Bad Gateway emoji
Jan 30, 2026
3fd2d5e
Add 420 and hanf (cannabis) emojis
Jan 30, 2026
8b8c6c5
Fix 200 and 404 HTTP status code emojis with proper labels
Jan 30, 2026
4eaba90
Fix acab emoji - 1312 RUN-DMC style
Jan 30, 2026
1690ee9
Fix no_nazis + antifascist - RUN-DMC style, NO swastika symbols
Jan 30, 2026
1c80140
Restore original antifa logo (without border)
Jan 30, 2026
410a803
Use Antifa Heart logo (two flags in heart)
Jan 30, 2026
127074a
Update antifa + ccc emojis
Jan 30, 2026
a919b12
Antifa heart with white background
Jan 30, 2026
786000f
Antifa heart: white fill inside heart only
Jan 30, 2026
c0f63f0
Antifa heart - clean version
Jan 30, 2026
7e2eb6f
Antifa heart emoji - correct version
Jan 30, 2026
a848a73
Antifa emoji optimized (128x128, 2.6KB)
Jan 30, 2026
539b8df
Sync all emojis from mastodon-matrix-theme
Jan 30, 2026
fd89540
Update README: 165 emojis, standard upload limits
Jan 30, 2026
5be2c8b
Fix: Media modal images now visible
Jan 30, 2026
1fa059f
Critical fix: Force images visible in all modals
Jan 30, 2026
64d25f5
Fix: Force ALL images visible (feed + modals)
Jan 30, 2026
a9a6fbe
Fix: Disable lazy loading - show images immediately
Jan 30, 2026
f206669
Theme: 50% dark green overlay - rain stays green
Jan 30, 2026
9c892fd
Fix: Banner/header image fully visible, no overlay
Jan 30, 2026
98bf11a
Fix: Media modal komplett transparent - keine Verdunklung mehr
Jan 30, 2026
ed193b2
Modal overlay transparent - Matrix Rain sichtbar hinter Bildern
Jan 30, 2026
7a3218d
Banner 100% sichtbar - keine Verdunklung
Jan 30, 2026
d5e7dbe
Fix: Splash Screen Buttons wieder sichtbar
Jan 31, 2026
9de884c
Modal overlay komplett transparent - keine Verdunklung
Jan 31, 2026
b7620e9
Banner: alle Gradients und Overlays entfernt
Jan 31, 2026
288fc1a
Modal overlay: stärkeres Override für Inline-Styles
Jan 31, 2026
d750a46
Banner: alle Overlays und Gradients komplett entfernt
Jan 31, 2026
1cc5b0c
Body und Container komplett transparent für Matrix Rain
Jan 31, 2026
2aaa9fa
Modal overlay: Aggressive inline-style override für transparent
Jan 31, 2026
22aba3e
JS MutationObserver: Entfernt inline background von modal overlay
Jan 31, 2026
136d463
Fix: modal-root__container ausgenommen von dunklem Hintergrund bei Me…
Jan 31, 2026
98304f6
KRITISCHER FIX: errordon_matrix.scss in application.scss importiert -…
Jan 31, 2026
9c42903
Override --color-bg-overlay CSS variable zu transparent für Matrix theme
Jan 31, 2026
968b4d1
Alle Container transparent: html, body, app-holder, ui, columns-area
Jan 31, 2026
91bcdf3
Fix: [class*=modal] Selektor excludiert media-modal, alle inner eleme…
Jan 31, 2026
3c358a1
DEEP FIX: Override --color-bg-ambient und alle Mastodon CSS variables…
Jan 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
19 changes: 12 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -228,8 +228,8 @@ Beyond legal compliance, Errordon includes:
| 🎬 **Profile Media Tabs** | Separate Videos/Audio/Images tabs |
| 🎨 **Matrix Theme** | Cyberpunk green UI (Ctrl+Shift+M) |
| 🖥️ **Matrix Terminal** | Interactive landing page with games |
| 😎 **127 Custom Emojis** | Matrix/Hacker/Nerd/CCC/DevOps/Security themed |
| 📤 **250MB Uploads** | With server-side transcoding |
| 😎 **165 Custom Emojis** | Matrix/Hacker/Nerd/CCC/DevOps/Security themed |
| 📤 **Standard Uploads** | 10MB images, 99MB videos |
| 🔒 **Privacy-First** | Strict defaults via ENV |
| 💾 **Dynamic Storage Quota** | 60% disk shared equally, profile display |
| 🔍 **Media Filters** | Originals only, Alt text, Public |
Expand Down Expand Up @@ -262,7 +262,7 @@ ERRORDON_THEME=matrix # Options: matrix, default, light

## 😎 Custom Emojis

127 Matrix/Hacker/Nerd/CCC/DevOps/Security themed emojis in 14 categories:
165 Matrix/Hacker/Nerd/CCC/DevOps/Security themed emojis in 14 categories:

| Category | Emojis |
|----------|--------|
Expand Down Expand Up @@ -303,7 +303,7 @@ bundle exec rails errordon:import_emojis

- **Profile Media Columns**: Separate tabs for Videos, Audio, Images in user profiles
- **Filter UI**: Filter by "originals only", "with alt text", visibility
- **Large Uploads**: Up to 250MB for video/audio with automatic transcoding
- **Standard Uploads**: Mastodon defaults (10MB images, 99MB videos)
- **Privacy Defaults**: Strict preset inspired by chaos.social principles

## 📁 Repository Structure
Expand Down Expand Up @@ -333,7 +333,7 @@ errordon/
│ ├── initializers/errordon_*.rb # Feature configs
│ ├── routes/errordon.rb # API routes
│ └── locales/errordon.*.yml # Translations
├── public/emoji/errordon/ # 127 custom SVG emojis
├── public/emoji/errordon/ # 165 custom emojis (PNG + SVG)
├── lib/tasks/errordon_emojis.rake # Emoji import task
├── deploy/ # Production configs
├── docs/ # Documentation
Expand Down Expand Up @@ -408,15 +408,20 @@ This software is for you if:

## 📜 License

**AGPLv3** - Compatible with Mastodon's license.
**Code:** [Anti-Capitalist Software License 1.4](https://anticapitalist.software/) - Compatible with Mastodon's AGPL license.

All Errordon additions are also AGPLv3.
**Emojis:**
- **OpenMoji** (tech emojis): [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) - https://openmoji.org
- **Political emojis** (acab, antifa, fcknzs, etc.): Custom designs, free to use

> OpenMoji emojis by the OpenMoji project (https://openmoji.org). License: CC BY-SA 4.0

---

## 🔗 Links

- [Mastodon](https://github.com/mastodon/mastodon) - Upstream project
- [OpenMoji](https://openmoji.org) - Open source emoji library (CC BY-SA 4.0)
- [Ollama](https://ollama.com/) - AI backend for NSFW-Protect
- [German Criminal Code (StGB)](https://www.gesetze-im-internet.de/stgb/) - Legal framework

Expand Down
80 changes: 74 additions & 6 deletions app/javascript/mastodon/features/errordon/matrix_theme.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,9 @@ export const getStoredTheme = (): ThemeName => {
if (stored && stored in themes) {
return stored as ThemeName;
}
// If no localStorage preference, check if server enabled Matrix theme
// Server adds 'theme-matrix' class when ERRORDON_MATRIX_THEME_ENABLED=true
if (document.body.classList.contains('theme-matrix')) {
return 'matrix';
}
return 'default';
// Default to Matrix theme for Errordon
// Users can switch to default/light via Ctrl+Shift+M
return 'matrix';
};

export const setTheme = (themeName: ThemeName): void => {
Expand Down Expand Up @@ -74,18 +71,89 @@ export const toggleMatrixTheme = (): void => {
setTheme(next);
};

// Remove inline background from modal overlays and containers (CSS can't override inline styles reliably)
const fixModalOverlay = (element: Element): void => {
const el = element as HTMLElement;

// Fix overlay
if (element.classList.contains('modal-root__overlay')) {
el.style.backgroundColor = 'transparent';
el.style.background = 'transparent';
}

// Fix container when it contains a media modal
if (element.classList.contains('modal-root__container')) {
const hasMediaModal = element.querySelector('.media-modal, .image-modal, .video-modal, .audio-modal');
if (hasMediaModal) {
el.style.backgroundColor = 'transparent';
el.style.background = 'transparent';
}
}

// Fix the modal-root itself
if (element.classList.contains('modal-root')) {
el.style.backgroundColor = 'transparent';
el.style.background = 'transparent';
}
};

const initModalOverlayFixer = (): void => {
// Selectors for elements that need transparent backgrounds
const selectors = '.modal-root__overlay, .modal-root__container, .modal-root';

// Fix any existing elements
document.querySelectorAll(selectors).forEach(fixModalOverlay);

// Watch for new elements being added
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
mutation.addedNodes.forEach((node) => {
if (node instanceof Element) {
// Check the node itself
fixModalOverlay(node);
// Check descendants
node.querySelectorAll(selectors).forEach(fixModalOverlay);
}
});
// Also check for attribute changes on existing elements
if (mutation.type === 'attributes' && mutation.target instanceof Element) {
fixModalOverlay(mutation.target);
}
});
});

observer.observe(document.body, {
childList: true,
subtree: true,
attributes: true,
attributeFilter: ['style', 'class']
});
};

export const initMatrixTheme = (): void => {
// Apply stored theme on page load
const theme = getStoredTheme();
setTheme(theme);

// Initialize modal overlay fixer for Matrix theme
if (theme === 'matrix') {
initModalOverlayFixer();
}

// Add keyboard shortcut: Ctrl+Shift+M to toggle Matrix theme
document.addEventListener('keydown', (e: KeyboardEvent) => {
if (e.ctrlKey && e.shiftKey && e.key === 'M') {
e.preventDefault();
toggleMatrixTheme();
}
});

// Re-init overlay fixer when theme changes
window.addEventListener('errordon:theme-change', ((e: CustomEvent) => {
if (e.detail.theme === 'matrix') {
initModalOverlayFixer();
}
}) as EventListener);
};

// Auto-initialize when DOM is ready
Expand Down
4 changes: 4 additions & 0 deletions app/javascript/styles/application.scss
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
@use 'common';

// Errordon Matrix Theme - loaded on top of default theme
// Applied via body.theme-matrix class
@import 'errordon_matrix';
Loading
Loading