An organization page offers the same press section, managed by its team - #2113
Merged
Conversation
Owner
Author
|
Not merging yet. Two handlers were not revisited when
Everything else in the review held. An AI agent wrote this text in my name. I know that is problematic. |
Der Pressebereich war seit #2086 nur der von Mitgliedern, obwohl Vutuv.PressKit seit #2083 jeden Eigentümer kennt: eine Seite hatte ein bildschirmgroßes Logo und nichts, was eine Redaktion herunterladen könnte. Karte, Bereichsseite, Agentenformate, Sitemap-Eintrag und Editor sind jetzt derselbe Code mit der Seite als Eigentümer; der Editor hängt für Inhaber und Publisher im Verwaltungs- menü, und ein Vektor-Logo der Seite wandert mit einem Druck auf das Regal. Die Bilder gehören der Seite: organization_id besitzt sie, die Kollegin, die sie hochgeladen hat, steht nur in uploader_user_id, und jedes Teammitglied sieht ein Bild, das die KI-Prüfung noch hält. page_path/1 baut den Pfad jetzt aus dem Slug statt aus dem Wurzel-Handle, der nur die nackte /:slug-Seite ausliefert -- er hätte auf 404 gezeigt. Obendrauf: das Bildnachweis-Feld füllt sich mit dem Namen des Kontos, wenn es kein voriges Bild gibt. Claude-Session: https://claude.ai/code/session_01WPMGFtmCZNip8EJiRrx6ch
Zwei Fehler, die erst entstanden, als der Editor einen Eigentümer bekam, der
nicht der Betrachter ist. Speichern übergab das {:error, :forbidden} von
PressKit.update/3 an first_error/1, das nur Changesets kennt: FunctionClauseError,
Socket tot. Und Entfernen fragte gar nicht -- PressKit.delete/1 nimmt bewusst
keinen Betrachter, weil die KI-Ablehnung aus #2084 keinen hat, und solange der
Eigentümer der Betrachter war, war das Auflösen der Zeile aus dessen eigenem
Regal die Prüfung.
Jetzt geht jeder abgelehnte Schreibvorgang durch dieselbe write_error/2 wie das
Hochladen, und das Löschen fragt manageable_by?/2 pro Ereignis -- es ist der
unumkehrbare Weg: purge/1 nimmt die Zeile, jede Größe und das private Original,
und nichts leitet daraus wieder eine Druckdatei ab. Beide Regressionstests sind
kalibriert.
Claude-Session: https://claude.ai/code/session_01WPMGFtmCZNip8EJiRrx6ch
Beide holen sich ihre eigene Verbindung über member_with_role/3 und ließen das conn aus dem Setup ungenutzt im Muster stehen, was zwei Compiler-Warnungen in einer sonst warnungsfreien Datei ergab. Der Schlüssel fällt einfach aus dem Muster; an den Tests selbst ändert sich nichts. Claude-Session: https://claude.ai/code/session_01WPMGFtmCZNip8EJiRrx6ch
Der Rebase auf main kollidierte nur in den vier Katalogen, und zwar in den
Referenzzeilen. Aufgelöst über mains Seite, damit dessen Übersetzungen
vollständig bleiben, danach einmal extrahiert -- wobei gettext.extract genau die
drei seitenbezogenen Sätze wieder mit dem mitgliedsbezogenen Deutsch fuzzy
gefüllt hat ("Ihr Logo", "über Sie schreibt"), also dieselbe Falle, gegen die
diese msgids überhaupt erst angelegt wurden. Die fünf Übersetzungen stehen
wieder von Hand, de und it tragen null fuzzy, und die Zahl der msgids liegt
exakt fünf über mains.
Claude-Session: https://claude.ai/code/session_01WPMGFtmCZNip8EJiRrx6ch
wintermeyer
force-pushed
the
claude/press-kit-organization-page-2087
branch
from
September 10, 2026 07:52
21cf3da to
789d689
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A page had one screen-sized logo and nothing a journalist could download, while
Vutuv.PressKithas taken either owner kind since #2083.The card, the section page, the four agent-format siblings, the sitemap entry
and the editor are now the same code with an organization as the owner. The
editor is
/organizations/:slug/press/edit— the member's ownVutuvWeb.PressKitLive, embedded rather than routed — on the manage tab bar foran owner or publisher. A page whose logo is a vector takes it onto the logo
shelf with one press, and every team member sees a picture the AI check still
holds, not only whoever uploaded it.
Underneath:
PressKit.page_path/1built a page's URL from its root handle,which serves the bare
/:slugonly. It answered a 404.On top of #2087, on your word: the credit field falls back to the account's
name — the page's, for a page's kit.
Closes #2087
An AI agent wrote this text in my name. I know that is problematic.
https://claude.ai/code/session_01WPMGFtmCZNip8EJiRrx6ch