diff --git a/app/frontend/components/AppToolbar.vue b/app/frontend/components/AppToolbar.vue
index 6232dea..8fb473d 100644
--- a/app/frontend/components/AppToolbar.vue
+++ b/app/frontend/components/AppToolbar.vue
@@ -447,7 +447,7 @@ async function onSample() {
:key="p.clientId"
class="avatar peer"
:style="{ background: p.color }"
- >{{ p.name.replace(/^Anonym \(/, '').slice(0, 1).toUpperCase() }}
+ >{{ p.name.slice(0, 1).toUpperCase() }}
+{{ library.peers.value.length - 5 }}
diff --git a/app/frontend/components/SheetCanvas.vue b/app/frontend/components/SheetCanvas.vue
index 0fd3da6..6e1596f 100644
--- a/app/frontend/components/SheetCanvas.vue
+++ b/app/frontend/components/SheetCanvas.vue
@@ -90,7 +90,8 @@ function onDrop(e: DragEvent) {
function selectObj(id: string) {
store.selectObject(id);
- store.bringToFront(id);
+ // z-order is document content: read-only viewers just select
+ if (!store.ui.readOnly) store.bringToFront(id);
}
diff --git a/app/frontend/store/library.ts b/app/frontend/store/library.ts
index 067616a..d3dfdcf 100644
--- a/app/frontend/store/library.ts
+++ b/app/frontend/store/library.ts
@@ -39,7 +39,9 @@ const CHANNEL = 'numolus:library';
const DEFAULT_TITLE = 'Unbenannt';
const APP_TITLE = 'numolus';
const ANON_COLORS = ['#e67e22', '#2980b9', '#27ae60', '#8e44ad', '#c0392b', '#16a085'];
-const ANON_NAMES = ['Fuchs', 'Dachs', 'Luchs', 'Otter', 'Eule', 'Biber', 'Reh', 'Igel'];
+/** Anonymous people are shown as two random words, e.g. "Kiesel Komet". */
+const ANON_WORDS_A = ['Kiesel', 'Wolke', 'Anker', 'Nebel', 'Kompass', 'Laterne', 'Moos', 'Feder', 'Bernstein', 'Brise', 'Quelle', 'Funke'];
+const ANON_WORDS_B = ['Komet', 'Fuchs', 'Welle', 'Ahorn', 'Leuchtturm', 'Otter', 'Gipfel', 'Mond', 'Dachs', 'Birke', 'Falke', 'Stern'];
export type DocSource = 'local' | 'server';
export interface DocRef {
@@ -84,7 +86,7 @@ function writeLinks(links: LinkDoc[]) {
function presenceIdentity(user: { name: string; color: string } | null) {
if (user) return { name: user.name, color: user.color };
const pick = (a: T[]) => a[Math.floor(Math.random() * a.length)];
- return { name: `Anonym (${pick(ANON_NAMES)})`, color: pick(ANON_COLORS) };
+ return { name: `${pick(ANON_WORDS_A)} ${pick(ANON_WORDS_B)}`, color: pick(ANON_COLORS) };
}
function createLibrary() {