Skip to content

Google Drive browser in Documents - #39

Merged
rorychatt merged 5 commits into
mainfrom
feat/drive-browser
Nov 1, 2026
Merged

rorychatt merged 5 commits into
mainfrom
feat/drive-browser

Conversation

@rorychatt

Copy link
Copy Markdown
Contributor

Adds a read-only Drive browser to the Documents app: browse folders, search, and add a file (Google Docs/Sheets/Slides exported as PDF) as a Documents record with the file attached. Own read-only token (OBOP_GDRIVE_BROWSE_REFRESH_TOKEN), admin-only by default (OBOP_DRIVE_BROWSE_GROUP), imports audited. Docs in DEPLOY.md.

Tested against a fake Drive and in the built back office; not against real Google. Sign is not linked to Documents yet (see SIGN-DOCUSEAL.md).

🤖 Generated with Claude Code

rorychatt and others added 5 commits November 1, 2026 19:18
… PDF export)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…heck line

Imports go through BlobService::upload, so the target field's rights, size
limit and type check apply; the group that may browse is
OBOP_DRIVE_BROWSE_GROUP (default platform.admin); imports are logged.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Browse folders, search by name, add a file; the new document opens prefilled
(title, Drive link, the imported file). Catalogues: ten new messages in all
six languages, machine-drafted.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…GN-DOCUSEAL

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@rorychatt
rorychatt merged commit 9555614 into main Nov 1, 2026
5 checks passed
rorychatt added a commit that referenced this pull request Nov 5, 2026
The new leaf crate crates/kernel/obop-brand (no I/O; depends on neither
obop-commands nor obop-site; nothing calls it yet). Slice S1a of
docs/spec/branding.md (PROPOSED; decision D94 is reserved).

- policy: the allow-list of a name, a title and a message (letters with a script
  of their own by Script_Extensions, marks after a letter, digit or mark at most
  three in a row, decimal digits, the ASCII space, the listed punctuation; NFC;
  Default_Ignorable_Code_Point refused whatever the category), the forms refused
  on an NFKC copy (: / \ @, a host-like run, 7 or more digits), the one-script
  rule of UTS #39 Highly Restrictive for names and titles, the limits 40/60/240,
  and the read-side safety subset with fixed reason words.
- slug: derivation (NFKD, drop marks, lowercase, runs of a-z0-9 joined by -,
  i- before a digit, cut to 30, `instance` when nothing is left) and the pattern.
- Brand, DEFAULT_NAME, LANGS, the fallback chain (title, message), the neutral
  switch, matches_client and fold (default-ignorables, Cf and white space removed,
  NFKC, to_lowercase), the logo header constants.
- The Unicode spike is the first set of tests. U+30FC is Lm with Script_Extensions
  Hiragana and Katakana (own script Common); U+E0001, U+3164 (a letter, Lo), the
  joiners U+200C and U+200D, U+FE0F (a mark, Mn) and U+FFF0 and U+E0080 (unassigned)
  are default ignorable; U+02BB is a modifier letter of script Common with no
  extensions. The spec's remembered facts hold.
- New dependencies: icu_normalizer 2.3 and icu_properties 2.3 (Unicode-3.0, both
  already in Cargo.lock at 2.3.0; no cargo update) and sha2 0.11 (for `v`, used by
  the next commit).

Tests: the policy table of spec section 13, slug cases (Straße, Ærø, Łódź give
stra-e, r, odz), golden names read by a human, the fallback chain, the fold on the
characters clean_text keeps, and generated-text totality under catch_unwind.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant