Skip to content

Release#21

Closed
sorlros wants to merge 22 commits into
mainfrom
release
Closed

Release#21
sorlros wants to merge 22 commits into
mainfrom
release

Conversation

@sorlros

@sorlros sorlros commented Mar 20, 2026

Copy link
Copy Markdown
Owner

No description provided.

sorlros and others added 8 commits March 19, 2026 14:19
- Implemented 'fountain pen' WritingEffect for AI responses.
- Added Shimmer loading effects for stories and characters.
- Refactored ResponsiveLayout to eliminate nested Scaffolds, fixing black screen on resize.
- Added Manuscript and Focus modes to StoryScreen.
- Integrated haptic feedback across major interactive elements.
- Optimized desktop experience with dedicated side panels.
- Updated characters and models schemas in backend.
- Cleanup of old dev logs and added latest analysis documentation.
feat: overhaul UI/UX with premium effects and responsive layout fix
@vercel

vercel Bot commented Mar 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
novelaine Ready Ready Preview, Comment Mar 20, 2026 8:27am

@gemini-code-assist

Copy link
Copy Markdown

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 Pull Request는 캐릭터 관리 기능을 대폭 확장하고, 사용자 인터페이스를 모바일 및 데스크톱 환경에 맞춰 반응형으로 개선하는 데 중점을 두었습니다. 특히, 스토리 읽기 경험을 향상시키기 위한 새로운 모드와 시각적 효과가 추가되었으며, 배포 파이프라인의 안정성을 확보하고 내부 LLM 전략 문서를 업데이트했습니다. 전반적으로 사용자 경험과 개발 효율성을 동시에 끌어올리는 변경사항들을 포함합니다.

Highlights

  • 캐릭터 관리 기능 확장: 캐릭터 목록 API에 사용자 ID 필터링 기능이 추가되었고, 캐릭터 모델에 '보관함 저장 여부' 및 '외형 설명' 필드가 도입되었습니다. 프론트엔드에서는 새로운 '캐릭터 보관함' 화면이 추가되었으며, 캐릭터 생성 시 보관함 필터링 기능이 제공됩니다.
  • 반응형 UI/UX 개선: 인증 화면, 홈 화면의 스토리 카드, 테마 칩, 스토리 화면의 앱 바 및 입력 필드 등 다양한 UI 요소들이 모바일 환경에 최적화되도록 반응형 디자인이 개선되었습니다. 또한, 스토리 화면에 '집중 모드'와 '원고 모드' 전환 기능이 추가되었습니다.
  • 스토리 화면 인터랙션 강화: 스토리 화면에 새로운 폰트 옵션(EB Garamond, JetBrains Mono)이 추가되었고, AI 생성 텍스트에 쓰기 효과 애니메이션이 적용되었습니다. 스토리 카드 및 캐릭터 목록에 시머(shimmer) 로딩 효과가 추가되어 사용자 경험이 향상되었습니다. 또한, 다양한 사용자 인터랙션에 햅틱 피드백이 추가되었습니다.
  • CI/CD 및 문서 업데이트: Flutter Web Vercel 배포 오류가 아티팩트 구조화 전략을 통해 해결되었으며, 관련 개발 로그가 추가되었습니다. 기존 개발 로그 및 RAG 구현 문서는 제거되고, 새로운 LLM 전략 제안 문서가 추가되었습니다.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

이 PR은 캐릭터 보관함 시스템 도입, 애플리케이션 전반의 대대적인 UI/UX 개선, 그리고 반응성 및 코드 구조 개선을 위한 상당한 리팩토링을 포함하는 주요 기능 릴리스입니다. ResponsiveLayout의 유연성 증대, Shimmer 로딩 효과, WritingEffect와 같은 고급 UI 컴포넌트 추가 등 핵심적인 개선 사항들이 눈에 띕니다. 리뷰 결과, 백엔드에서 도달할 수 없는 코드가 포함된 사소한 버그 1건과, 프론트엔드에서 기능이 백엔드 API 호출 없이 시뮬레이션 상태로 남아있는 심각한 문제 1건이 발견되었습니다. 전반적으로 애플리케이션을 크게 향상시키는 매우 인상적인 변경 사항들입니다.

Comment on lines +35 to +67
Future<void> _toggleVault() async {
if (_isUpdating) return;

setState(() => _isUpdating = true);

try {
final apiService = ApiService();
final charId = widget.character['id'];

// Assume endpoint PATCH /characters/{id} exists or implement it
// For now, using updateStory or similar pattern if generic update is available
// Ideally: await apiService.updateCharacter(charId, {'is_in_vault': !_isInVault});

// Let's implement a generic patch in ApiService if needed, but for this simulation:
setState(() {
_isInVault = !_isInVault;
_isUpdating = false;
});

CustomToast.show(
context,
_isInVault ? "캐릭터 보관함에 저장되었습니다." : "보관함에서 제거되었습니다.",
type: _isInVault ? ToastType.success : ToastType.info
);

// Refresh character list provider
ref.invalidate(charactersProvider);

} catch (e) {
setState(() => _isUpdating = false);
CustomToast.show(context, "보관함 업데이트 실패: $e", type: ToastType.error);
}
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

현재 _toggleVault 함수는 시뮬레이션 코드로 구현되어 있어 실제 백엔드 API를 호출하지 않고 UI 상태만 변경하고 있습니다. 이로 인해 보관함 기능이 서버에 영구적으로 저장되지 않습니다. 주석으로 언급된 apiService.updateCharacter를 사용하여 실제 API를 호출하도록 수정해야 합니다. 또한, 로딩 상태(_isUpdating)는 try-catch-finally 구문을 사용하여 API 호출의 성공 여부와 관계없이 항상 해제되도록 하는 것이 더 안정적입니다.

  Future<void> _toggleVault() async {
    if (_isUpdating) return;
    
    setState(() => _isUpdating = true);
    
    try {
      final apiService = ApiService();
      final charId = widget.character['id'];
      
      // 백엔드에 캐릭터의 'is_in_vault' 상태 업데이트를 요청합니다.
      await apiService.updateCharacter(charId, {'is_in_vault': !_isInVault});
      
      if (!mounted) return;

      // API 호출 성공 후 UI 상태를 업데이트합니다.
      setState(() {
        _isInVault = !_isInVault;
      });
      
      CustomToast.show(
        context, 
        _isInVault ? "캐릭터 보관함에 저장되었습니다." : "보관함에서 제거되었습니다.",
        type: _isInVault ? ToastType.success : ToastType.info
      );
      
      // 캐릭터 목록 프로바이더를 무효화하여 목록을 새로고침합니다.
      ref.invalidate(charactersProvider);
      
    } catch (e) {
      // 에러 발생 시 사용자에게 알림
      if (mounted) CustomToast.show(context, "보관함 업데이트 실패: $e", type: ToastType.error);
    } finally {
      // API 호출 성공/실패 여부와 관계없이 로딩 상태를 해제합니다.
      if (mounted) {
        setState(() => _isUpdating = false);
      }
    }
  }

Comment thread backend/app/api/characters.py Outdated
)
except Exception as e:
return ApiResponse.fail(str(e))
return ApiResponse.fail(str(e))

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

중복된 return 구문이 있습니다. 33번째 줄의 return 문은 32번째 줄의 return 문 때문에 절대 실행될 수 없는 코드(unreachable code)이므로 제거해야 합니다.

sorlros and others added 3 commits March 20, 2026 09:52
- backend: removed unreachable duplicate return statement in characters API.
- frontend: implemented actual API call for character vault toggle with proper error handling and mounted checks.
- Added sections explaining Summary Buffer Memory, RAG-based Selective Memory, and Prompt Compression.
- Highlighted the usage of English-centric prompting and structural keyword division for efficiency.
- Explained the role of Drift (WASM) local database for zero-latency and persistence.
- Refined ResponsiveLayout to fix minor padding issues on desktop.
…imizations

Docs/update readme efficiency optimizations
sorlros and others added 2 commits March 20, 2026 11:15
… profile

- Renamed redundant profile_screen.dart to settings_screen.dart and fixed its Curves animation.
- Synchronized navigation indices between SideMenu and CrispBottomNavBar.
- Added missing imports across HomeScreen, CrispBottomNavBar, and ProfileScreen.
- Implemented vaultCharactersProvider to sync 'My Characters' with vaulted data.
- Refactored CharacterVaultScreen to use ResponsiveLayout for desktop compatibility.
- Updated main README with language selector and synced Korean version as default.
fix: resolve navigation mapping, missing imports, and sync vault with…
sorlros and others added 4 commits March 20, 2026 11:22
…ild errors

- Renamed profile_screen.dart to settings_screen.dart and corrected Curves animation.
- Synchronized navigation indices between SideMenu and CrispBottomNavBar.
- Implemented vaultCharactersProvider to sync 'My Characters' with vaulted characters.
- Refactored CharacterVaultScreen to use ResponsiveLayout for seamless desktop sidebar integration.
- Fixed missing imports in HomeScreen and CrispBottomNavBar.
- Updated main README with language selector and set Korean as default.
- Added supabase/.temp/ to .gitignore to prevent committing sensitive Supabase CLI temporary files.
- Removed already committed supabase/.temp/ files from tracking.
- Verified and ensured ProfileScreen and SettingsScreen use correct navigation indices (4 and 3 respectively).
fix: finalize navigation mapping, sync vault with profile, and fix bu…
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