-
-
Notifications
You must be signed in to change notification settings - Fork 42
Complete UI Overhaul and Feature Implementation #28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
ElliotBadinger
wants to merge
26
commits into
mafik:master
Choose a base branch
from
ElliotBadinger:feature/final-polish-and-documentation
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Complete UI Overhaul and Feature Implementation #28
ElliotBadinger
wants to merge
26
commits into
mafik:master
from
ElliotBadinger:feature/final-polish-and-documentation
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Fix dependency issues
…I changes, Added Time Durations, Minor Bug Fixes and Save File with Custom Name as requested by the client.
Android SDK Update, Background Recording Support, Permission Fixes, UI changes, Added Time Durations, Minor Bug Fixes and Save File with Custom Name as requested by the client.
This commit introduces a comprehensive overhaul of the Echo application, focusing on modernizing the user interface, improving user experience, and adding significant new functionality. Key changes include: - **UI/UX Overhaul:** - Replaced the entire visual theme with a professional, high-contrast Material You design system. - Redesigned the main screen and settings screen with modern layouts, typography, and components. - Replaced all legacy dialogs with modern, intuitive components like bottom sheets and Material alerts. - **New Features:** - Implemented a user-requested auto-save feature, allowing for automatic clip saving when the memory buffer is full. - Added a clear visual indicator and toggle on the main screen to manage the app's listening state. - **Code Refactoring & Cleanup:** - Performed a full refactoring of the associated Java code to support the new UI, resulting in a cleaner, more maintainable codebase. - Removed dozens of obsolete layout, drawable, color, and class files. - **Documentation:** - Added a new professional `README.md` with updated instructions. - Created a `spec.md` file to document the design philosophy and outline future development plans. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit introduces a new Recordings Manager feature and addresses several critical Android Studio inspection warnings to improve app stability, security, and compatibility with modern Android versions.
**New Feature: Recordings Manager**
- Adds a new screen to list all saved audio recordings.
- Implements in-app playback functionality with play/pause controls.
- Adds the ability for users to delete recordings with a confirmation dialog.
- Integrates the new screen with the main UI via a "Saved Recordings" button.
**Critical Fixes & Refinements**
- **Permissions:** Fixes crashes by adding the `SCHEDULE_EXACT_ALARM` and `WAKE_LOCK` permissions to the `AndroidManifest.xml`.
- **Scoped Storage:** Refactors the file saving mechanism to use the `MediaStore` API, ensuring compliance with modern Android storage standards. Files are now saved to the public "Music/Echo" directory and will not be deleted when the app is uninstalled.
- **Translations:** Resolves all "Incomplete translation" errors by adding the missing strings to the Polish (`values-pl`) translation file.
- **UI & Theming:**
- Implements a custom downloadable font (`Inter`) to create a more modern and consistent visual identity.
- Fixes layout issues on the settings and save clip screens to prevent text truncation and improve responsiveness.
- Makes the status bar transparent for a more immersive UI.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit resolves all outstanding UI issues from the user's feedback and fixes several critical crashes, resulting in a stable and visually polished application. **UI Enhancements:** - Re-implements the "Inter" font by bundling it directly with the app, providing a consistent and modern typography. - Fixes the status bar overlap on all screens by adding correct padding, ensuring UI elements are no longer obscured. - Improves the layout and spacing on the Settings screen for better readability. - Adds a user-friendly "empty state" message to the Recordings screen when no files are present. **Crash & Bug Fixes:** - Resolves a `NullPointerException` in `SaidItService` that occurred when stopping a recording that was never started. - Fixes a crash in `SaidItActivity` caused by incorrect handling of old, unnecessary permission requests (`MANAGE_EXTERNAL_STORAGE`). - Corrects a crash caused by an invalid font certificate by removing the downloadable font implementation in favor of bundled fonts. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit introduces a complete redesign of the app's user interface and resolves several critical stability issues. Key changes include: - **UI Overhaul:** - Redesigned the Settings screen with a modern, intuitive card-based layout. - Implemented a more polished and visually appealing "empty state" for the Saved Recordings screen. - Replaced the floating help button with a proper toolbar icon on the main screen. - **Critical Bug Fixes:** - Resolved a persistent crash that occurred when navigating to the Saved Recordings screen. - Fixed a critical bug that caused the recording timer to reset whenever the user entered the Settings screen. - Corrected multiple other crashes related to background processing and UI updates. - **Feature Enhancements:** - Implemented a new, interactive `TapTargetView`-based tutorial to guide users on their first launch. - Refactored the "Saved Recordings" feature to use the modern `MediaStore` API, ensuring recordings are properly saved and displayed. - Extended the auto-save duration slider to support multi-hour configurations. - **Architectural Improvements:** - Refactored the service binding lifecycle to be managed by the `SaidItActivity`, improving stability and preventing state loss during navigation. - Introduced a `RecordingItem` data class to better manage recording metadata. - Cleaned up obsolete code and layouts from previous implementations. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
…m-ss.wav) to avoid conflicts Update onStartCommand(ACTION_AUTO_SAVE) in SaidItService to format a timestamp with SimpleDateFormat(Locale.US) and pass it to dumpRecording(). Ensures unique, descriptive names without adding imports.
…C, low-latency audio memory Introduce a direct ByteBuffer ring (CHUNK_SIZE=1,920,000) with wrap-around writes and an overwriting flag. Maintain capacity/writePos/size; reuse a growable ioBuffer to minimize allocations. Preserve allocate/fill/dump/getStats APIs and estimation via uptime. Reduces GC pressure and improves predictable latency for the audio thread.
… duration metadata Add AacMp4Writer using MediaCodec+MediaMuxer at 96 kbps mono. Update SaidItService to write AAC during recording/dumps, save to MediaStore (audio/mp4), and set DURATION via MediaMetadataRetriever. Use event-driven AudioRecord callbacks (~50ms) and flushAudioRecord to lower latency. Restart listening on sample rate changes. Note: follow-up to previous auto-save commit (message referenced .wav), actual outputs are .m4a.
…ist screen SaidItFragment: integrate SaveClip bottom sheet with progress dialog and success prompt (open/share), sync listening toggle visual state and timers. RecordingsActivity: query MediaStore for audio/mp4|m4a|aac, newest first. Add list_item_recording.xml (material card with play/delete actions). Update strings with how-to, tour, and recording UI labels.
- Introduce a `Clock` interface with a `SystemClockWrapper` for production and a `FakeClock` for testing. - Update `SaidItService` and `AudioMemory` to use the new `Clock` interface, improving testability of time-dependent logic. - Update corresponding tests to inject the `FakeClock`. - Update `.gitignore` to exclude `.md` and `.claude` files.
c9ee757 to
24b44f8
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This pull request addresses user feedback by performing a complete overhaul of the Echo application. It introduces a modern, professional user interface based on Material You principles, adds significant new functionality, and dramatically improves the user experience.
All changes are based on the detailed plan outlined in the new
spec.mdfile.Key Improvements:
README.mdand aspec.mdfor future development.This PR resolves all outstanding UI/UX issues and delivers a significantly more polished and feature-rich application.
🤖 Generated with Claude Code