Skip to content
This repository was archived by the owner on May 13, 2026. It is now read-only.

Test CI skip behavior - #2

Closed
shiba4life wants to merge 1 commit into
mainfrom
test-ci-skip
Closed

Test CI skip behavior#2
shiba4life wants to merge 1 commit into
mainfrom
test-ci-skip

Conversation

@shiba4life

Copy link
Copy Markdown
Collaborator

Verify jobs skip gracefully with no code.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@shiba4life shiba4life closed this Mar 6, 2026
@shiba4life
shiba4life deleted the test-ci-skip branch March 6, 2026 19:16
shiba4life added a commit that referenced this pull request Apr 8, 2026
…s, UX improvements

Closes the remaining gaps that prevented access control from being
usable in practice.

Fix #1/#7 — Batch apply defaults:
- POST /api/sharing/apply-defaults — applies classification-based
  access policies to all approved schemas with unprotected fields
- "Apply Default Policies" button in Sharing Overview when unprotected
  fields are detected, with warning banner explaining the exposure

Fix #2 — Unsigned policy routes:
- PUT /api/sharing/policy/{schema}/{field} — set field policy without
  signature (under /sharing/ scope, not /schema/ which is protected)
- GET /api/sharing/policies/{schema} — get all field policies
- API client: setFieldPolicy, getSchemaFieldPolicies, applyDefaultPolicies

Fix #4 — Role prompt after invite acceptance:
- After accepting an invite, UI switches to Contacts tab and auto-opens
  the new contact's Manage panel with role picker + audit
- Message updated: "Accepted X — assign a role below"

Fix #5 — Unprotected fields warning:
- Sharing Overview shows yellow warning banner when unprotected fields > 0
- Explains "anyone you trust can see these" with one-click fix button
- Distinguishes "no policies set" from "everything protected"

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
shiba4life added a commit that referenced this pull request Apr 8, 2026
…s, UX improvements (#257)

Closes the remaining gaps that prevented access control from being
usable in practice.

Fix #1/#7 — Batch apply defaults:
- POST /api/sharing/apply-defaults — applies classification-based
  access policies to all approved schemas with unprotected fields
- "Apply Default Policies" button in Sharing Overview when unprotected
  fields are detected, with warning banner explaining the exposure

Fix #2 — Unsigned policy routes:
- PUT /api/sharing/policy/{schema}/{field} — set field policy without
  signature (under /sharing/ scope, not /schema/ which is protected)
- GET /api/sharing/policies/{schema} — get all field policies
- API client: setFieldPolicy, getSchemaFieldPolicies, applyDefaultPolicies

Fix #4 — Role prompt after invite acceptance:
- After accepting an invite, UI switches to Contacts tab and auto-opens
  the new contact's Manage panel with role picker + audit
- Message updated: "Accepted X — assign a role below"

Fix #5 — Unprotected fields warning:
- Sharing Overview shows yellow warning banner when unprotected fields > 0
- Explains "anyone you trust can see these" with one-click fix button
- Distinguishes "no policies set" from "everything protected"

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
shiba4life added a commit that referenced this pull request Apr 8, 2026
…tail

Fix #1 — Better error messages:
- "Discovery master key not configured" → "Email invites and link
  sharing require Exemem cloud backup. Enable in Settings."

Fix #2 — Mark sent invites as accepted:
- When accepting a reciprocal invite, marks the first pending sent
  invite as accepted in SentInviteStore

Fix #4 — Mutual direction tracking:
- accept_trust_invite checks if sender is already in contacts
- If yes (reciprocal accept), sets direction to Mutual
- Contact upsert now updates connected_at timestamp
- Preserves existing roles on update (don't overwrite with empty map)

Fix #6 — Descriptive names in audit:
- AccessibleSchema now includes descriptive_name and total_fields
- Users can see which schema is hidden and how many fields are filtered

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
shiba4life added a commit that referenced this pull request Apr 8, 2026
…tail (#260)

Fix #1 — Better error messages:
- "Discovery master key not configured" → "Email invites and link
  sharing require Exemem cloud backup. Enable in Settings."

Fix #2 — Mark sent invites as accepted:
- When accepting a reciprocal invite, marks the first pending sent
  invite as accepted in SentInviteStore

Fix #4 — Mutual direction tracking:
- accept_trust_invite checks if sender is already in contacts
- If yes (reciprocal accept), sets direction to Mutual
- Contact upsert now updates connected_at timestamp
- Preserves existing roles on update (don't overwrite with empty map)

Fix #6 — Descriptive names in audit:
- AccessibleSchema now includes descriptive_name and total_fields
- Users can see which schema is hidden and how many fields are filtered

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
shiba4life added a commit that referenced this pull request Apr 8, 2026
…ly, descriptive names

Fix #1 — Mutual direction: accept_trust_invite now checks sent_invites
store (not just contact book) to detect reciprocal accepts. If we have
any sent invites, the incoming accept makes it mutual.

Fix #2 — Sent invite nonce correlation: marks the most recent pending
sent invite as accepted (reversed iteration to get latest first).

Fix #3 — Re-apply defaults with force: apply_classification_defaults
accepts a `force` parameter. POST /api/sharing/apply-defaults?force=true
overwrites existing policies. UI and non-force calls preserved.

Fix #4 — Remote query descriptive names: node-info endpoint now returns
a `schemas` array with `{name, descriptive_name}` alongside the legacy
`shared_schemas` string array. Remote Query UI shows descriptive names
like "Meeting Notes" instead of hashes.

Fix #5 — Auto-apply on approval: verified working. approve_schema()
calls apply_classification_defaults after approval, which populates
policies from field_data_classifications.

Fix #6 — Email verification: code path verified end-to-end (routes →
publisher → Lambda). Requires live Exemem deployment to test SES.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
shiba4life added a commit that referenced this pull request Apr 15, 2026
…snack, restore

Fixes 6 friction points from the second browser walkthrough:

#2  Relationship dropdown overlapping tier text — wrapped in
    flex-wrap with shrink-0 so relationship + tier stack cleanly
    on narrow viewports instead of overlapping.

#6  Me persona name button cursor — built-in personas now show
    cursor-not-allowed + reduced opacity instead of the default
    pointer, so the no-op click is visually signaled.

#7  Detail pane scroll — added overflow-y-auto + max-h so the
    detail column scrolls independently instead of pushing the
    whole page. The persona list stays visible while you browse
    a long detail view.

#8  Edge a/b readable labels — PersonaDetailBody builds a
    fpIndex (id → label) from the enriched fingerprints array
    and passes it to EdgeRows. Each edge row now renders
    "face · Photos:IMG_A_0 — face · Photos:IMG_A_3 · 1.00"
    instead of raw fp_6bc921… hashes.

#9  Undo snackbar on ✂ exclude — every exclude (mention or edge)
    now shows a fixed-position "Excluded mention mn_5de… — Undo"
    toast at the bottom of the viewport. Auto-dismisses after
    5 seconds. Clicking Undo fires the un-exclude patch and
    clears the snackbar.

#10 Restore dismissed Failed records — resolve_ingestion_error
    now accepts { resolved: bool } in the PATCH body (defaults
    to true for backward compat). The IngestionErrorsPanel shows
    a "Restore" button on resolved rows (visible when "Show
    dismissed" is checked) that PATCHes resolved=false. The
    client's resolveIngestionError(id, resolved) signature gains
    the optional second arg.

31 vitest cases pass; cargo clippy clean.
shiba4life added a commit that referenced this pull request Apr 15, 2026
…snack, restore (#483)

Fixes 6 friction points from the second browser walkthrough:

#2  Relationship dropdown overlapping tier text — wrapped in
    flex-wrap with shrink-0 so relationship + tier stack cleanly
    on narrow viewports instead of overlapping.

#6  Me persona name button cursor — built-in personas now show
    cursor-not-allowed + reduced opacity instead of the default
    pointer, so the no-op click is visually signaled.

#7  Detail pane scroll — added overflow-y-auto + max-h so the
    detail column scrolls independently instead of pushing the
    whole page. The persona list stays visible while you browse
    a long detail view.

#8  Edge a/b readable labels — PersonaDetailBody builds a
    fpIndex (id → label) from the enriched fingerprints array
    and passes it to EdgeRows. Each edge row now renders
    "face · Photos:IMG_A_0 — face · Photos:IMG_A_3 · 1.00"
    instead of raw fp_6bc921… hashes.

#9  Undo snackbar on ✂ exclude — every exclude (mention or edge)
    now shows a fixed-position "Excluded mention mn_5de… — Undo"
    toast at the bottom of the viewport. Auto-dismisses after
    5 seconds. Clicking Undo fires the un-exclude patch and
    clears the snackbar.

#10 Restore dismissed Failed records — resolve_ingestion_error
    now accepts { resolved: bool } in the PATCH body (defaults
    to true for backward compat). The IngestionErrorsPanel shows
    a "Restore" button on resolved rows (visible when "Show
    dismissed" is checked) that PATCHes resolved=false. The
    client's resolveIngestionError(id, resolved) signature gains
    the optional second arg.

31 vitest cases pass; cargo clippy clean.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant