- Change route for RSS feed to use defaults for format
- Add logging to RssController#feed to track request format
These changes improve the clarity of the routing for the RSS feed
and enhance debugging capabilities by logging the request format.
The new route definition ensures that the feed responds correctly
with the default format, while the logging provides insight into
how the feed is being accessed.
- Implement JSON feed generation in the RssController
- Add new API endpoint to serve JSON feed
- Update RSS feed view to include hidden machine-readable data
This commit introduces a new feature that allows the application to
serve weather art data in JSON format. The JSON feed includes
metadata such as the title, description, and additional custom
fields for better integration with other services. The changes
also enhance the existing RSS feed by embedding machine-readable
data within the HTML structure, improving accessibility and
usability for automated systems.
- Add custom XML namespace for weather data
- Include additional weather fields: country, city, state,
weather description, prompt, and formatted date
- Update enclosure type to 'image/webp' for better
compatibility
This update improves the RSS feed by providing more detailed
weather information for each art piece, enhancing the
user experience and ensuring better data representation.
The new fields allow for richer content in the feed, making
it more informative for users.
- Include image attachments and city associations in the
RSS feed query to improve performance.
- This change reduces the number of database queries
needed when rendering the feed, addressing potential
N+1 query problems.
- Add country name, city name, and state name to the RSS feed
- Include weather description and AI-generated description
- Add weather date to provide more context for each item
These changes improve the RSS feed by providing more detailed
information about the weather art, enhancing the user experience
and making the feed more informative for subscribers.
- Include data-hashtag attribute in the Facebook share button
- Comment out an alternative database URL in credentials
This update enhances the social sharing feature by allowing
users to include hashtags when sharing content on Facebook.
The commented-out database URL serves as a reference for
future configurations.
- Removed the language switcher component from the
navigation bar.
- This change simplifies the user interface, focusing
on primary navigation elements.
The decision was made to streamline navigation and reduce
clutter, as the language switcher was deemed not essential
for the current user experience.
- Include region, country, state, and query parameters
in the pagination helper for better filtering.
- This change enhances the user experience by allowing
users to navigate through weather arts based on
specific criteria, improving the relevance of the
displayed results.
- Update cities controller to include state in city data
- Modify results partial to pass pagination parameters
- Adjust index view to support turbo frame actions
These changes improve the pagination functionality by ensuring
that the correct parameters are passed for filtering cities
based on region, country, and state. This enhances the user
experience by providing more relevant data and better
navigation through the city listings.
- Update city initialization to safely access state ID
- Use safe navigation operator to prevent potential nil errors
This change ensures that if the state is nil, the code will not raise
an error when trying to access its ID. It improves the robustness of
the city data synchronization process.
- Use `find_or_initialize_by` to ensure uniqueness based on
multiple attributes.
- Replace multiple `update!` calls with `assign_attributes` for
better readability and maintainability.
- Add error handling for city saving process to log errors
if saving fails.
These changes streamline the city syncing process, making it
more efficient and easier to understand while ensuring that
cities are created or updated correctly based on unique
attributes.
- Define a new Rake task `sync_city` to synchronize city data
- Update the `find_or_create_by!` method to include additional
attributes such as `flag`, `wiki_data_id`, `active`, and
`priority`
This new task allows for better management of city data by
ensuring that all relevant attributes are set during the
synchronization process. It enhances the existing functionality
by providing more detailed information for each city.
- Change country_code to country_id for better clarity
- Add state_id to the city creation process
These changes ensure that the City model is created with the correct
associations to country and state, improving data integrity.
This refactor also enhances the readability of the code.
- Update city creation to include country and state codes
- Ensure that the country and state are fetched correctly
- Use safe navigation to avoid nil errors
This change enhances the city creation process by ensuring that
country and state codes are properly associated with the city,
improving data integrity and consistency.
- Add assignment for country_id in state update
This change ensures that the country_id is correctly set when
updating state information, improving the accuracy of the
data synchronization process.
- Update country lookup to use safe navigation operator
- Ensure state creation uses safe access for country attributes
These changes prevent potential errors when the country data is
not available, improving the reliability of the geo data sync
process.
- Change cities_path to include both region and country
- Update active class logic to reflect current state
This fix ensures that the dropdown links correctly point to the
appropriate cities based on the selected region and country,
improving navigation and user experience.
- Implement state filtering in the CitiesController
- Add new scope `by_state` in the City model
- Update cities index view to include state dropdown
- Add slug column to states for friendly URLs
- Update English locale to include 'All States'
This commit enhances the cities index page by allowing users to
filter cities based on the selected state. It introduces a new
scope in the City model for state filtering and updates the
view to present a dropdown for state selection. Additionally,
it adds a slug column to the states table to support friendly
URLs, improving the overall user experience.
- Change from using `get_object` to `head_object` to check if the
sitemap file exists before attempting to retrieve it.
- Implement a presigned URL for accessing the sitemap, which is valid
for 15 minutes.
- Set cache headers to allow for 1 hour of caching.
- Improved logging for better error tracking and debugging.
This change enhances the efficiency of sitemap retrieval by reducing
unnecessary data transfer and provides a more secure way to access
the sitemaps through presigned URLs. It also improves error handling
by logging specific errors related to missing sitemaps.
- Implement index action to list sitemaps
- Create view for displaying sitemaps with details
- Add helper method for generating sitemap URLs
- Enhance error handling for S3 service errors
This commit introduces a new feature for managing sitemaps in the application. It includes an index view that lists all available sitemaps with their last modified date and size, along with a link to view each sitemap. The error handling for S3 interactions has also been improved to log errors and return appropriate responses.
- Ensure consistent formatting in the long date string
- No functional changes were made, only a formatting adjustment
This commit addresses a minor formatting issue in the Arabic locale file, ensuring that the long date format is consistent with the expected output. No changes to functionality or behavior were introduced.
- Update available locales to include Bengali, Hindi, Urdu, and Arabic
- Add new locale files for each language with translations for UI elements
- Ensure the application can now support a wider audience by providing
localized content
This change enhances the application's accessibility and usability for
users who speak these languages, allowing for a more inclusive user
experience. The new translations cover key UI components and messages,
ensuring that users can interact with the application in their native
languages.
- Update dropdown to support dynamic locales from I18n
- Limit dropdown height with overflow handling for better UX
This change improves the language switcher by dynamically
loading available locales from the I18n configuration. It
also enhances the user experience by limiting the height
of the dropdown and enabling scrolling, making it easier
to navigate through multiple language options.
- Extend available locales in the application to include:
- Portuguese (Brazil)
- Croatian
- Persian
- German
- Spanish
- French
- Italian
- Turkish
- Russian
- Ukrainian
- Polish
- Create new locale files for each language with appropriate translations.
- Update existing locale files to include new languages.
This update enhances the application's accessibility by supporting a wider range of languages, allowing users from different regions to interact with the application in their native language.
- Introduce default, short, and long date formats
- Enhance date representation for better user experience
This update allows the application to display dates in multiple formats,
including a default format of 'YYYY-MM-DD', a short format of
'"MMM DD"', and a long format of '"Month DD, YYYY"'. This
improves localization support and user interface flexibility.
- Refactor keywords in cities_controller.rb
- Refactor keywords in weather_arts_controller.rb
- Refactor keywords in application.html.erb
This change improves the SEO of the application by updating
keywords to include 'ai' and 'ai web', which are more relevant
and likely to enhance search visibility. The previous keywords
were less optimized for current trends in AI-related searches.
- Modify keywords in cities_controller.rb to include 'ai weather'
- Update keywords in weather_arts_controller.rb to include 'ai weather'
- Change keywords in application.html.erb to include 'ai weather'
These changes enhance the search engine optimization (SEO) of the
application by ensuring that relevant keywords are included in
meta tags, improving visibility for users searching for AI
weather-related content.
- Modify keywords in CitiesController for better
categorization of AI art and weather art.
- Update keywords in WeatherArtsController to include
city country name and description.
- Add keywords in application layout for overall site
SEO improvement.
These changes aim to improve search engine visibility
and better describe the content related to AI-generated
weather art.
- Introduce a Redis-based lock to prevent concurrent execution of
batch generation tasks.
- Set a TTL of 300 seconds for the lock to ensure it is released
after a timeout.
- Add logging for situations where a task is already in progress.
This enhancement ensures that batch tasks do not overlap, which can
lead to data inconsistencies and resource contention. The locking
mechanism improves the reliability of the batch processing system.
- Change the lang attribute of the HTML tag to use the current I18n locale
- This change ensures that the application correctly reflects the user's language preferences
Updating this attribute improves accessibility and SEO by helping search engines and assistive technologies better understand the language of the content.
- Change string split method from single quotes to double quotes.
This commit improves code consistency by aligning the string
split syntax with the rest of the codebase. No functional
changes were made as a result of this update.
- Update set_locale method to use around_action instead of before_action.
- Modify locale extraction logic to handle more cases, ensuring better fallback handling.
- Improve overall method clarity and maintainability by restructuring code.
This change enhances the localization process by providing a clearer
way to manage locale settings and ensures that it correctly falls back
to the default locale when necessary. It also resolves some edge cases
in locale extraction based on the HTTP_ACCEPT_LANGUAGE header.
- Refactor generate_sitemap method to support locale
- Add setup_sitemap_config method for configuration
- Implement sitemap generation for default and localized paths
This update enhances the sitemap generation process by supporting
multiple languages. Users can now access a sitemap with language
prefixes, improving SEO and usability for different locales.
Additionally, error handling has been improved to log specific
errors related to locale generation.
- Adjust footer components for better spacing
- Move language switcher to navbar for easier access
- Simplify language switcher links using iteration
- Enhance copyright text to dynamically reflect the current year
- Implemented `extract_locale_from_accept_language_header` to
retrieve the user's preferred language from the request.
- Added `sanitize_locale` for validating and sanitizing locale
inputs against available locales.
- Updated `set_locale` method to prepare for incorporating
browser language preference handling.
These changes enhance the application's ability to set the locale
based on the user's browser settings, paving the way for better
internationalization support.
- Introduced `TranslatableName` module to allow for
localized names for `Country` and `Region` models.
- Updated views to display `localized_name` instead of
`name` for improved internationalization.
- Refactored JSON serialization for `translations` attribute.
- Enhanced localization support by adding new languages:
Japanese and Korean, with updated locale files.
- Removed outdated English and Chinese locales for countries
and regions to clean up the codebase.
- Implement locale extraction and fallback mechanism
- Add translation files for English and Chinese
- Update views to use translated strings for various UI elements
This commit introduces support for multiple languages in the application, enhancing accessibility for users. It includes a fallback mechanism for locales and updates to the user interface to display translated content.
- Rename docker workflow files for clarity: 'docker-dev' and 'docker-main'
- Remove unused city seed files to streamline the database seeding process
These changes improve the organization of the workflow files and reduce clutter in the seed data, making it easier to manage and maintain the project.
- Introduce RssController to handle RSS feed requests
- Add a new route for the RSS feed
- Implement RSS feed view to display weather art
- Update application layout to include RSS feed link
- Set content type for RSS responses
This commit adds an RSS feed feature that allows users to
subscribe to updates on daily AI-generated weather art.
The feed includes the latest weather art and relevant
metadata, enhancing user engagement and accessibility.
- Update image tag to safely access the first latest art
- Use safe navigation operator to prevent potential nil errors
This change ensures that if there are no latest arts or if the
image is not attached, the application will not raise an error.
It improves the robustness of the view by handling edge cases.
- Update SitemapsController to use MinIO credentials
- Modify RefreshSitemapWorker to adapt to MinIO settings
- Change AWS configuration in initializers and storage files
- Add MinIO credentials to credentials.yml.enc
This commit transitions the application from using AWS S3 to MinIO for
storage. It updates all relevant configurations and ensures that the
application can now interact with MinIO seamlessly, including
support for both production and development environments.
- Change badge class from 'badge-neutral' to 'badge-ghost' for
better visual consistency.
- This update improves the UI by aligning the badge styles with
the overall design language of the application.
- Update background color for better visibility
- Adjust padding and margins for improved spacing
- Refactor card components for a cleaner design
- Add AI Prompt section for better user engagement
These changes improve the overall user experience by making the
weather art display more visually appealing and easier to
navigate. The layout adjustments also enhance the mobile
view, ensuring a consistent experience across devices.
- Modify the `PER_RUN_ION` constant of `BatchGenerateWeatherArtsWorker` from
3 to 2, reducing the number of images generated on each run.
- This change reduces the limit and will not affect other parts
of the application.
- It is about reducing the number of images generated per run and
will impact the performance of the application.
- It will not affect the other parts.
</commit_message>
- Include Redis gem in the Gemfile and update Gemfile.lock
- Implement locking mechanism in the RefreshSitemapWorker to prevent concurrent executions
- Use Redis to manage distributed locks for the sitemap generation process
This change introduces Redis for managing access controls in the sitemap
refresh workflow. It prevents multiple simultaneous jobs from running,
improving stability and performance when generating sitemaps.
- Modify the popular arts query to include city and country relationships
- Ensure the latest arts query also includes necessary associations
- Removed deprecated commented code for clarity
These changes improve data retrieval by establishing better relationships to
cities and their countries. This enhances the availability of data for
the views rendering the arts and keeps the code clean by removing
unnecessary comments.
- Change default_host assignment to use ENV.fetch for
RAILS_SITEMAP_DEFAULT_HOST
- This allows for easier configuration based on the environment,
particularly useful for production and development setups.
- Update query to select weather arts with last generation time
greater than the cutoff time.
- Adjust logging for clarity, including brackets around limits
and counts for better readability.
- Change from appending to selected cities to concatenating selected
cities, ensuring the full list is preserved.
This commit resolves an issue where the logic for filtering
recent weather arts was incorrect, potentially leading to missing
relevant entries. Additionally, it improves log output formatting
for better debugging.