Issue #79 write-ups, Watchtower settings pair, browser extension dev guide
Six new pages and five updated.
New:
- Issue-79-Ticket-Status-Not-Set — the reported status fault. Seven
creation paths, the priority that survived because "Normal" is the same
word in German, and the header fallback that displayed "Open" BECAUSE
no status was stored.
- Issue-79-Ticket-Source-Not-Set — the other half of the same report.
Why it could not be a one-line fix (ticket_origins has no is_default
and is company-scoped), the per-mailbox dropdown that dissolved it, and
the dismissible health mark.
- Configurable-Lookups-Developer-Guide — the through-line. Thirty-plus
places across five modules, three of them wrong in English on a stock
install; what to read instead of a name; the two derivations; the
"don't borrow a domain fact for a view decision" rule; and the
whole-payload rename diff that proves a fix.
- Watchtower-Settings + Watchtower-Settings-Developer-Guide — the pair.
- Browser-Extension-Developer-Guide — the endpoint, the payload keys, and
the trap of being the second consumer of a shared payload.
Updated:
- Watchtower — was describing eight cards and metrics that no longer
exist; now ten, with the settings link.
- Browser-Extension — corrected the badge description, added the update
notice and the dev guide link.
- Mailbox-Authentication — the Default ticket origin and the ! mark,
including why warnings can be dismissed and errors cannot.
- Bugs-Resolved — three rows.
- _Sidebar — nested entries under Watchtower, Browser Extension and Bugs
resolved.
Both validations clean across all 190 pages: every [Link] resolves to a
real .md, and every backticked path exists in the repo. Seven bare
filenames were promoted to full paths, as on the Forms and Slack pairs.
Issue #67: add the mode-switch postscript (#1081) and its troubleshooting row
Issue #67: app-only email sending — full write-up
New page explaining why app-only mailboxes could not send, in plain English:
what /me and /users/... actually mean, why the distinction only bites app-only,
the two further faults behind the reported one, the fix, and why the
implementation differs from the patch proposed in the issue.
Mailbox-Authentication gains a developer section on the three things auth_mode
changes, three troubleshooting rows, and a link to the new page. Sidebar updated.
Basic IMAP mailboxes: mark shipped, expand to full setup guide
The feature is now built in freeitsm-app (#776): a third mailbox provider
(username/password IMAP + SMTP). Rewrote the page from a roadmap note into a
user-facing setup guide (steps, server requirement, troubleshooting) and
dropped the "(planned)" qualifiers from the Mailbox-Authentication cross-links.
Add Basic IMAP / SMTP mailboxes page (planned)
New roadmap page documenting the design for connecting a plain
username/password IMAP+SMTP mailbox as a third provider alongside
Microsoft 365 and Google Workspace. Cross-linked from the Mailbox
Authentication page and added to the sidebar.
Mailbox Authentication: fix User.Read contradiction; add opt-out note
The "least privilege" line wrongly still said FreeITSM doesn't request
User.Read. Corrected, and added a "Prefer not to grant User.Read?"
section: it's optional (lowest-privilege, self-consent), only used for
alias resolution, with two zero-permission alternatives (use the primary
address, or app-only). Framed honestly as a trade-off, not unavoidable.
Mailbox Authentication: alias-awareness + corrected User.Read story
Delegated safeguards now capture the mailbox's full address set
(primary + UPN + proxyAddresses aliases), so a target that's an alias
is accepted. Updated the scopes 101 to reflect that User.Read is now
requested (low-privilege, user-consentable) to resolve aliases, with
graceful degradation when absent. Added an alias troubleshooting row.
Add Mailbox Authentication page (delegated vs app-only, scopes 101)
New page covering the two Microsoft auth modes, when to use each, the
"reading from the right inbox" safeguards (issue #26), a plain-English
OAuth scopes/permissions primer (incl. why User.Read is NOT needed),
Azure app-registration setup, Google note, and troubleshooting.
Linked from Tickets.md and the sidebar.