Skip to content

Add diaries, time capsules, and cover customization - #116

Draft
fortune710 wants to merge 3 commits into
devfrom
feat/new-ui
Draft

Add diaries, time capsules, and cover customization#116
fortune710 wants to merge 3 commits into
devfrom
feat/new-ui

Conversation

@fortune710

Copy link
Copy Markdown
Owner

What changed

  • Added multi-diary support with default-diary backfills, diary-specific entries, cover colors, persisted cover styles, optimistic editing, local caching, and shared cover transitions.
  • Added time-capsule creation, scheduling, backend unlock processing, notifications, listing, and reveal experiences.
  • Added Spotify provider support and new inspiration sources for contacts, media memories, and place visits.
  • Refined capture, calendar, onboarding, settings, friends, monthly dumps, typography, icons, and shared UI components.
  • Added the Supabase migrations required for diaries, time capsules, Spotify configuration, query indexes, colors, and cover styles.

Why

Entries previously had no first-class diary grouping, diary reads lacked the matching cache and database indexes, and time capsules did not have a complete creation-to-unlock flow. This change adds the required data model and user experiences while improving perceived performance through optimistic updates and local cache hydration.

User and developer impact

Users can create and customize multiple diaries, open diary-specific entries with a shared cover transition, and create time capsules that unlock on schedule. Developers now have typed diary and time-capsule services, migrations, reusable cover components, schedulers, and shared UI primitives.

Validation

  • npm run build:web passes.
  • git diff --check passes.
  • Supabase migrations are applied and synchronized through 20260808010500.
  • npx tsc --noEmit reaches only two pre-existing nullable-response warnings in hooks/__tests__/use-auth.test.ts.

fortune710and others added 3 commits August 2, 2026 00:56
Add step progress + close controls to sign-up/sign-in headers, refine the
floating tab bar's active-item styling and centering, drop the capture
screen's entry animation, and restyle the settings/profile forms with
shared icon components and a bottom-sheet form pattern.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Installs the impeccable skill bundle (reference docs, agents, scripts) across
.agents/.claude/.github, its hook wiring, and local Claude Code project
settings.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@bolt-new-by-stackblitz

Copy link
Copy Markdown

Review PR in StackBlitz CodeflowRun & review this pull request in StackBlitz Codeflow.

@coderabbitai

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: bbe8d76c-978c-45db-b7ad-24f9a07f1f11

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Note

.coderabbit.yaml has unrecognized properties

CodeRabbit is using all valid settings from your configuration. Unrecognized properties (listed below) have been ignored and may indicate typos or deprecated fields that can be removed.

⚠️ Parsing warnings (1)
Validation error: Unrecognized key: "path_filters"
⚙️ Configuration instructions
  • Please see the configuration documentation for more information.
  • You can also validate your configuration using the online YAML validator.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitUpdated (UTC)
❌ Deployment failed
View logs
keepsafe5c1c98cAug 08 2026, 04:59 AM

Sign up for freeto 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

@fortune710
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Add diaries, time capsules, and cover customization by fortune710 · Pull Request #116 · fortune710/keepsafe · GitHub
Skip to content

Add diaries, time capsules, and cover customization - #116

Draft
fortune710 wants to merge 3 commits into
devfrom
feat/new-ui
Draft

Add diaries, time capsules, and cover customization#116
fortune710 wants to merge 3 commits into
devfrom
feat/new-ui

Conversation

@fortune710

Copy link
Copy Markdown
Owner

What changed

  • Added multi-diary support with default-diary backfills, diary-specific entries, cover colors, persisted cover styles, optimistic editing, local caching, and shared cover transitions.
  • Added time-capsule creation, scheduling, backend unlock processing, notifications, listing, and reveal experiences.
  • Added Spotify provider support and new inspiration sources for contacts, media memories, and place visits.
  • Refined capture, calendar, onboarding, settings, friends, monthly dumps, typography, icons, and shared UI components.
  • Added the Supabase migrations required for diaries, time capsules, Spotify configuration, query indexes, colors, and cover styles.

Why

Entries previously had no first-class diary grouping, diary reads lacked the matching cache and database indexes, and time capsules did not have a complete creation-to-unlock flow. This change adds the required data model and user experiences while improving perceived performance through optimistic updates and local cache hydration.

User and developer impact

Users can create and customize multiple diaries, open diary-specific entries with a shared cover transition, and create time capsules that unlock on schedule. Developers now have typed diary and time-capsule services, migrations, reusable cover components, schedulers, and shared UI primitives.

Validation

  • npm run build:web passes.
  • git diff --check passes.
  • Supabase migrations are applied and synchronized through 20260808010500.
  • npx tsc --noEmit reaches only two pre-existing nullable-response warnings in hooks/__tests__/use-auth.test.ts.

fortune710and others added 3 commits August 2, 2026 00:56
Add step progress + close controls to sign-up/sign-in headers, refine the
floating tab bar's active-item styling and centering, drop the capture
screen's entry animation, and restyle the settings/profile forms with
shared icon components and a bottom-sheet form pattern.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Installs the impeccable skill bundle (reference docs, agents, scripts) across
.agents/.claude/.github, its hook wiring, and local Claude Code project
settings.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@bolt-new-by-stackblitz

Copy link
Copy Markdown

Review PR in StackBlitz CodeflowRun & review this pull request in StackBlitz Codeflow.

@coderabbitai

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: bbe8d76c-978c-45db-b7ad-24f9a07f1f11

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Note

.coderabbit.yaml has unrecognized properties

CodeRabbit is using all valid settings from your configuration. Unrecognized properties (listed below) have been ignored and may indicate typos or deprecated fields that can be removed.

⚠️ Parsing warnings (1)
Validation error: Unrecognized key: "path_filters"
⚙️ Configuration instructions
  • Please see the configuration documentation for more information.
  • You can also validate your configuration using the online YAML validator.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitUpdated (UTC)
❌ Deployment failed
View logs
keepsafe5c1c98cAug 08 2026, 04:59 AM

Sign up for freeto 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

@fortune710
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add diaries, time capsules, and cover customization by fortune710 · Pull Request #116 · fortune710/keepsafe · GitHub
Skip to content

Add diaries, time capsules, and cover customization - #116

Draft
fortune710 wants to merge 3 commits into
devfrom
feat/new-ui
Draft

Add diaries, time capsules, and cover customization#116
fortune710 wants to merge 3 commits into
devfrom
feat/new-ui

Conversation

@fortune710

Copy link
Copy Markdown
Owner

What changed

  • Added multi-diary support with default-diary backfills, diary-specific entries, cover colors, persisted cover styles, optimistic editing, local caching, and shared cover transitions.
  • Added time-capsule creation, scheduling, backend unlock processing, notifications, listing, and reveal experiences.
  • Added Spotify provider support and new inspiration sources for contacts, media memories, and place visits.
  • Refined capture, calendar, onboarding, settings, friends, monthly dumps, typography, icons, and shared UI components.
  • Added the Supabase migrations required for diaries, time capsules, Spotify configuration, query indexes, colors, and cover styles.

Why

Entries previously had no first-class diary grouping, diary reads lacked the matching cache and database indexes, and time capsules did not have a complete creation-to-unlock flow. This change adds the required data model and user experiences while improving perceived performance through optimistic updates and local cache hydration.

User and developer impact

Users can create and customize multiple diaries, open diary-specific entries with a shared cover transition, and create time capsules that unlock on schedule. Developers now have typed diary and time-capsule services, migrations, reusable cover components, schedulers, and shared UI primitives.

Validation

  • npm run build:web passes.
  • git diff --check passes.
  • Supabase migrations are applied and synchronized through 20260808010500.
  • npx tsc --noEmit reaches only two pre-existing nullable-response warnings in hooks/__tests__/use-auth.test.ts.

fortune710and others added 3 commits August 2, 2026 00:56
Add step progress + close controls to sign-up/sign-in headers, refine the
floating tab bar's active-item styling and centering, drop the capture
screen's entry animation, and restyle the settings/profile forms with
shared icon components and a bottom-sheet form pattern.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Installs the impeccable skill bundle (reference docs, agents, scripts) across
.agents/.claude/.github, its hook wiring, and local Claude Code project
settings.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@bolt-new-by-stackblitz

Copy link
Copy Markdown

Review PR in StackBlitz CodeflowRun & review this pull request in StackBlitz Codeflow.

@coderabbitai

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: bbe8d76c-978c-45db-b7ad-24f9a07f1f11

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Note

.coderabbit.yaml has unrecognized properties

CodeRabbit is using all valid settings from your configuration. Unrecognized properties (listed below) have been ignored and may indicate typos or deprecated fields that can be removed.

⚠️ Parsing warnings (1)
Validation error: Unrecognized key: "path_filters"
⚙️ Configuration instructions
  • Please see the configuration documentation for more information.
  • You can also validate your configuration using the online YAML validator.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitUpdated (UTC)
❌ Deployment failed
View logs
keepsafe5c1c98cAug 08 2026, 04:59 AM

Sign up for freeto 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

@fortune710
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add diaries, time capsules, and cover customization by fortune710 · Pull Request #116 · fortune710/keepsafe · GitHub
Skip to content

Add diaries, time capsules, and cover customization - #116

Draft
fortune710 wants to merge 3 commits into
devfrom
feat/new-ui
Draft

Add diaries, time capsules, and cover customization#116
fortune710 wants to merge 3 commits into
devfrom
feat/new-ui

Conversation

@fortune710

Copy link
Copy Markdown
Owner

What changed

  • Added multi-diary support with default-diary backfills, diary-specific entries, cover colors, persisted cover styles, optimistic editing, local caching, and shared cover transitions.
  • Added time-capsule creation, scheduling, backend unlock processing, notifications, listing, and reveal experiences.
  • Added Spotify provider support and new inspiration sources for contacts, media memories, and place visits.
  • Refined capture, calendar, onboarding, settings, friends, monthly dumps, typography, icons, and shared UI components.
  • Added the Supabase migrations required for diaries, time capsules, Spotify configuration, query indexes, colors, and cover styles.

Why

Entries previously had no first-class diary grouping, diary reads lacked the matching cache and database indexes, and time capsules did not have a complete creation-to-unlock flow. This change adds the required data model and user experiences while improving perceived performance through optimistic updates and local cache hydration.

User and developer impact

Users can create and customize multiple diaries, open diary-specific entries with a shared cover transition, and create time capsules that unlock on schedule. Developers now have typed diary and time-capsule services, migrations, reusable cover components, schedulers, and shared UI primitives.

Validation

  • npm run build:web passes.
  • git diff --check passes.
  • Supabase migrations are applied and synchronized through 20260808010500.
  • npx tsc --noEmit reaches only two pre-existing nullable-response warnings in hooks/__tests__/use-auth.test.ts.

fortune710and others added 3 commits August 2, 2026 00:56
Add step progress + close controls to sign-up/sign-in headers, refine the
floating tab bar's active-item styling and centering, drop the capture
screen's entry animation, and restyle the settings/profile forms with
shared icon components and a bottom-sheet form pattern.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Installs the impeccable skill bundle (reference docs, agents, scripts) across
.agents/.claude/.github, its hook wiring, and local Claude Code project
settings.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@bolt-new-by-stackblitz

Copy link
Copy Markdown

Review PR in StackBlitz CodeflowRun & review this pull request in StackBlitz Codeflow.

@coderabbitai

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: bbe8d76c-978c-45db-b7ad-24f9a07f1f11

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Note

.coderabbit.yaml has unrecognized properties

CodeRabbit is using all valid settings from your configuration. Unrecognized properties (listed below) have been ignored and may indicate typos or deprecated fields that can be removed.

⚠️ Parsing warnings (1)
Validation error: Unrecognized key: "path_filters"
⚙️ Configuration instructions
  • Please see the configuration documentation for more information.
  • You can also validate your configuration using the online YAML validator.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitUpdated (UTC)
❌ Deployment failed
View logs
keepsafe5c1c98cAug 08 2026, 04:59 AM

Sign up for freeto 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

@fortune710
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Add diaries, time capsules, and cover customization by fortune710 · Pull Request #116 · fortune710/keepsafe · GitHub
Skip to content

Add diaries, time capsules, and cover customization - #116

Draft
fortune710 wants to merge 3 commits into
devfrom
feat/new-ui
Draft

Add diaries, time capsules, and cover customization#116
fortune710 wants to merge 3 commits into
devfrom
feat/new-ui

Conversation

@fortune710

Copy link
Copy Markdown
Owner

What changed

  • Added multi-diary support with default-diary backfills, diary-specific entries, cover colors, persisted cover styles, optimistic editing, local caching, and shared cover transitions.
  • Added time-capsule creation, scheduling, backend unlock processing, notifications, listing, and reveal experiences.
  • Added Spotify provider support and new inspiration sources for contacts, media memories, and place visits.
  • Refined capture, calendar, onboarding, settings, friends, monthly dumps, typography, icons, and shared UI components.
  • Added the Supabase migrations required for diaries, time capsules, Spotify configuration, query indexes, colors, and cover styles.

Why

Entries previously had no first-class diary grouping, diary reads lacked the matching cache and database indexes, and time capsules did not have a complete creation-to-unlock flow. This change adds the required data model and user experiences while improving perceived performance through optimistic updates and local cache hydration.

User and developer impact

Users can create and customize multiple diaries, open diary-specific entries with a shared cover transition, and create time capsules that unlock on schedule. Developers now have typed diary and time-capsule services, migrations, reusable cover components, schedulers, and shared UI primitives.

Validation

  • npm run build:web passes.
  • git diff --check passes.
  • Supabase migrations are applied and synchronized through 20260808010500.
  • npx tsc --noEmit reaches only two pre-existing nullable-response warnings in hooks/__tests__/use-auth.test.ts.

fortune710and others added 3 commits August 2, 2026 00:56
Add step progress + close controls to sign-up/sign-in headers, refine the
floating tab bar's active-item styling and centering, drop the capture
screen's entry animation, and restyle the settings/profile forms with
shared icon components and a bottom-sheet form pattern.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Installs the impeccable skill bundle (reference docs, agents, scripts) across
.agents/.claude/.github, its hook wiring, and local Claude Code project
settings.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@bolt-new-by-stackblitz

Copy link
Copy Markdown

Review PR in StackBlitz CodeflowRun & review this pull request in StackBlitz Codeflow.

@coderabbitai

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: bbe8d76c-978c-45db-b7ad-24f9a07f1f11

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Note

.coderabbit.yaml has unrecognized properties

CodeRabbit is using all valid settings from your configuration. Unrecognized properties (listed below) have been ignored and may indicate typos or deprecated fields that can be removed.

⚠️ Parsing warnings (1)
Validation error: Unrecognized key: "path_filters"
⚙️ Configuration instructions
  • Please see the configuration documentation for more information.
  • You can also validate your configuration using the online YAML validator.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitUpdated (UTC)
❌ Deployment failed
View logs
keepsafe5c1c98cAug 08 2026, 04:59 AM

Sign up for freeto 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

@fortune710
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add diaries, time capsules, and cover customization by fortune710 · Pull Request #116 · fortune710/keepsafe · GitHub
Skip to content

Add diaries, time capsules, and cover customization - #116

Draft
fortune710 wants to merge 3 commits into
devfrom
feat/new-ui
Draft

Add diaries, time capsules, and cover customization#116
fortune710 wants to merge 3 commits into
devfrom
feat/new-ui

Conversation

@fortune710

Copy link
Copy Markdown
Owner

What changed

  • Added multi-diary support with default-diary backfills, diary-specific entries, cover colors, persisted cover styles, optimistic editing, local caching, and shared cover transitions.
  • Added time-capsule creation, scheduling, backend unlock processing, notifications, listing, and reveal experiences.
  • Added Spotify provider support and new inspiration sources for contacts, media memories, and place visits.
  • Refined capture, calendar, onboarding, settings, friends, monthly dumps, typography, icons, and shared UI components.
  • Added the Supabase migrations required for diaries, time capsules, Spotify configuration, query indexes, colors, and cover styles.

Why

Entries previously had no first-class diary grouping, diary reads lacked the matching cache and database indexes, and time capsules did not have a complete creation-to-unlock flow. This change adds the required data model and user experiences while improving perceived performance through optimistic updates and local cache hydration.

User and developer impact

Users can create and customize multiple diaries, open diary-specific entries with a shared cover transition, and create time capsules that unlock on schedule. Developers now have typed diary and time-capsule services, migrations, reusable cover components, schedulers, and shared UI primitives.

Validation

  • npm run build:web passes.
  • git diff --check passes.
  • Supabase migrations are applied and synchronized through 20260808010500.
  • npx tsc --noEmit reaches only two pre-existing nullable-response warnings in hooks/__tests__/use-auth.test.ts.

fortune710and others added 3 commits August 2, 2026 00:56
Add step progress + close controls to sign-up/sign-in headers, refine the
floating tab bar's active-item styling and centering, drop the capture
screen's entry animation, and restyle the settings/profile forms with
shared icon components and a bottom-sheet form pattern.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Installs the impeccable skill bundle (reference docs, agents, scripts) across
.agents/.claude/.github, its hook wiring, and local Claude Code project
settings.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@bolt-new-by-stackblitz

Copy link
Copy Markdown

Review PR in StackBlitz CodeflowRun & review this pull request in StackBlitz Codeflow.

@coderabbitai

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: bbe8d76c-978c-45db-b7ad-24f9a07f1f11

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Note

.coderabbit.yaml has unrecognized properties

CodeRabbit is using all valid settings from your configuration. Unrecognized properties (listed below) have been ignored and may indicate typos or deprecated fields that can be removed.

⚠️ Parsing warnings (1)
Validation error: Unrecognized key: "path_filters"
⚙️ Configuration instructions
  • Please see the configuration documentation for more information.
  • You can also validate your configuration using the online YAML validator.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitUpdated (UTC)
❌ Deployment failed
View logs
keepsafe5c1c98cAug 08 2026, 04:59 AM

Sign up for freeto 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

@fortune710
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); Add diaries, time capsules, and cover customization by fortune710 · Pull Request #116 · fortune710/keepsafe · GitHub
Skip to content

Add diaries, time capsules, and cover customization - #116

Draft
fortune710 wants to merge 3 commits into
devfrom
feat/new-ui
Draft

Add diaries, time capsules, and cover customization#116
fortune710 wants to merge 3 commits into
devfrom
feat/new-ui

Conversation

@fortune710

Copy link
Copy Markdown
Owner

What changed

  • Added multi-diary support with default-diary backfills, diary-specific entries, cover colors, persisted cover styles, optimistic editing, local caching, and shared cover transitions.
  • Added time-capsule creation, scheduling, backend unlock processing, notifications, listing, and reveal experiences.
  • Added Spotify provider support and new inspiration sources for contacts, media memories, and place visits.
  • Refined capture, calendar, onboarding, settings, friends, monthly dumps, typography, icons, and shared UI components.
  • Added the Supabase migrations required for diaries, time capsules, Spotify configuration, query indexes, colors, and cover styles.

Why

Entries previously had no first-class diary grouping, diary reads lacked the matching cache and database indexes, and time capsules did not have a complete creation-to-unlock flow. This change adds the required data model and user experiences while improving perceived performance through optimistic updates and local cache hydration.

User and developer impact

Users can create and customize multiple diaries, open diary-specific entries with a shared cover transition, and create time capsules that unlock on schedule. Developers now have typed diary and time-capsule services, migrations, reusable cover components, schedulers, and shared UI primitives.

Validation

  • npm run build:web passes.
  • git diff --check passes.
  • Supabase migrations are applied and synchronized through 20260808010500.
  • npx tsc --noEmit reaches only two pre-existing nullable-response warnings in hooks/__tests__/use-auth.test.ts.

fortune710and others added 3 commits August 2, 2026 00:56
Add step progress + close controls to sign-up/sign-in headers, refine the
floating tab bar's active-item styling and centering, drop the capture
screen's entry animation, and restyle the settings/profile forms with
shared icon components and a bottom-sheet form pattern.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Installs the impeccable skill bundle (reference docs, agents, scripts) across
.agents/.claude/.github, its hook wiring, and local Claude Code project
settings.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@bolt-new-by-stackblitz

Copy link
Copy Markdown

Review PR in StackBlitz CodeflowRun & review this pull request in StackBlitz Codeflow.

@coderabbitai

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: bbe8d76c-978c-45db-b7ad-24f9a07f1f11

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Note

.coderabbit.yaml has unrecognized properties

CodeRabbit is using all valid settings from your configuration. Unrecognized properties (listed below) have been ignored and may indicate typos or deprecated fields that can be removed.

⚠️ Parsing warnings (1)
Validation error: Unrecognized key: "path_filters"
⚙️ Configuration instructions
  • Please see the configuration documentation for more information.
  • You can also validate your configuration using the online YAML validator.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitUpdated (UTC)
❌ Deployment failed
View logs
keepsafe5c1c98cAug 08 2026, 04:59 AM

Sign up for freeto 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

@fortune710