chore: release v0.2.1

Release v0.2.1 with typo fixes, keyboard navigation improvements, and
documentation updates.

- Fix multiple typos: AuthResponce → AuthResponse, GenreResponce →
  GenreResponse, FindResponce → FindResponse, defaultFoder → defaultFolder,
  TMDbGanreService → TMDbGenreService
- Rename "card" CSS class to "movie-item" for clarity
- Add arrow key navigation (Up/Down) for search results with focus indication
- Add Enter key selection for focused items and Escape key to close modal
- Improve error handling in TMDb API service for auth, rate limiting, and
  general errors
- Add template validation with clearer error messages
- Update LICENSE copyright to Vitalii Romanenko
- Update README with corrected plugin name and URLs
- Update manifest.json, package.json, and versions.json for v0.2.1
- Remove stale comment in searchModal.ts
- Fix release notes date in .github/workflows/release.yml

Breaking change: defaultFoder setting key renamed to defaultFolder.
Existing configurations will not migrate automatically.
This commit is contained in:
VitaliiRomanenko 2026-06-21 12:13:54 +03:00
parent 3960eaa901
commit 08223fa045
8 changed files with 71 additions and 45 deletions

View file

@ -54,3 +54,30 @@ jobs:
release/main.js
release/manifest.json
release/styles.css
body: |
## Release Notes for Popcorn MD v0.2.1
### Features
- **Keyboard navigation for search results**: Added arrow key navigation (Up/Down) to browse movie cards in the search modal, with visual focus indication and smooth scrolling
- **Enter key selection for focused item**: Pressing Enter now selects the currently focused movie card from the search results
- **Escape key to close**: Pressing Escape closes the search modal
### Improvements
- **Improved error handling in TMDb API service**: Added specific error messages for authentication failures (401), rate limiting (429), and general API errors. API key validation is now performed before making requests
- **Better template validation**: Added explicit checks for missing template files and non-file paths with clearer error messages
- **Renamed "card" CSS class to "movie-item"**: Improved semantic naming for better code clarity and maintainability
- **Fixed typo "foded" to "focused"**: Corrected CSS class name spelling in focus-related functionality
- **Styling enhancements**: Added hover effects, focus outlines, and improved visual feedback for movie cards with better layout and overflow handling
### Bug Fixes
- **Multiple typo corrections**:
- Fixed `AuthResponce` to `AuthResponse` (file rename and import updates)
- Fixed `GenreResponce` to `GenreResponse`
- Fixed `FindResponce` to `FindResponse`
- Fixed `defaultFoder` to `defaultFolder` across settings interface, defaults, and all references
- Fixed `TMDbGanreService` to `TMDbGenreService`
- **Fixed comment typo**: Corrected "focused" in SearchView comments
### Breaking Changes
- **Settings key renamed**: The `defaultFoder` setting key has been renamed to `defaultFolder`. Users will need to re-configure their default folder setting, or existing configurations will not migrate automatically

View file

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2026 4rlz
Copyright (c) 2026 Vitalii Romanenko
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View file

@ -1,10 +1,10 @@
# Popcorn-MD
![Obsidian](https://img.shields.io/badge/Obsidian-Plugin-7C3AED?style=flat-square&logo=obsidian)
![Version](https://img.shields.io/badge/Version-0.2.0-blue?style=flat-square)
![Version](https://img.shields.io/badge/Version-0.2.1-blue?style=flat-square)
![License](https://img.shields.io/badge/License-MIT-green?style=flat-square)
**PopcornMD** is an Obsidian plugin that lets you search for movies and TV shows via [TMDb](https://www.themoviedb.org/) and automatically create beautiful, structured notes from a template — all without leaving Obsidian.
**Popcorn-MD** is an Obsidian plugin that lets you search for movies and TV shows via [TMDb](https://www.themoviedb.org/) and automatically create beautiful, structured notes from a template — all without leaving Obsidian.
## Features
@ -19,19 +19,19 @@
1. Open **Settings → Community plugins**.
2. Disable **Safe mode**.
3. Click **Browse** and search for **"PopcornMD"**.
3. Click **Browse** and search for **"Popcorn-MD"**.
4. Install and enable the plugin.
### Manual (developer preview)
1. Download the latest release from [Releases](https://github.com/your-username/popcornmd/releases).
2. Extract `main.js`, `manifest.json`, and `styles.css` into `<vault>/.obsidian/plugins/popcornmd/`.
1. Download the latest release from [Releases](https://github.com/VitaliiRomanenko/popcorn-md/releases).
2. Extract `main.js`, `manifest.json`, and `styles.css` into `<vault>/.obsidian/plugins/popcorn-md/`.
3. Reload Obsidian and enable the plugin in **Settings → Community plugins**.
## Getting Started
1. **Get a TMDb API key** — Sign up at [themoviedb.org](https://www.themoviedb.org/signup) and request an API key.
2. **Open Plugin Settings** — Navigate to **Settings → Popcorn MD**.
2. **Open Plugin Settings** — Navigate to **Settings → Popcorn-MD**.
3. **Select template** — Select file from list
4. **Enter your API key** — Paste your TMDb API key and click **Save**.
5. **Open the movie search** — Use the command palette (`Cmd+P` / `Ctrl+P`) and run **"Popcorn MD: Create new movie note"**, or click the 🍿 ribbon icon.
@ -51,8 +51,8 @@
| **TMDb API Key** | Your TMDb API key (required) |
| **Default language** | Language for movie data |
| **Template path** | Path to your custom template file (relative to vault root) |
| **Default folder** *(added in v0.2)* | Where new movie notes are saved |
| **Include poster** *(added in v0.2)* | Toggle to embed movie poster image in notes |
| **Default folder** | Where new movie notes are saved |
| **Include poster** *(added in v0.3)* | Toggle to embed movie poster image in notes |
## Template System
@ -98,32 +98,32 @@ All variables are placeholders wrapped in double braces `{{variable}}` and are u
| Field | Example Value | Description |
|-------|---------------|-------------|
| **[tags](ca://s?q=tags_md_field)** | `Movie` | Category of the file, always `Movie`. |
| **[adult](ca://s?q=adult_md_field)** | `false` | Whether the movie is adult content (`true/false`). |
| **[belongs_to_collection](ca://s?q=collection_md_field)** | `The Dark Knight Trilogy` | Collection/series name if applicable. |
| **[budget](ca://s?q=budget_md_field)** | `185000000` | Production budget in USD. |
| **[genres](ca://s?q=genres_md_field)** | `Action, Drama` | List of genres. |
| **[homepage](ca://s?q=homepage_md_field)** | `https://www.dc.com/batman` | Official movie website. |
| **[TMDbID](ca://s?q=TMDbID_md_field)** | `155` | Unique TMDb identifier. |
| **[IMDbID](ca://s?q=IMDbID_md_field)** | `tt0468569` | Unique IMDb identifier. |
| **[origin_country](ca://s?q=origin_country_md_field)** | `US` | Country of origin. |
| **[original_language](ca://s?q=original_language_md_field)** | `en` | Original language. |
| **[original_title](ca://s?q=original_title_md_field)** | `The Dark Knight` | Original movie title. |
| **[overview](ca://s?q=overview_md_field)** | `Batman faces Joker...` | Short synopsis/description. |
| **[popularity](ca://s?q=popularity_md_field)** | `92.5` | Popularity score from TMDb. |
| **[poster_path](ca://s?q=poster_path_md_field)** | `/qJ2tW6WMUDux911r6m7haRef0WH.jpg` | Path to poster image. |
| **[production_companies](ca://s?q=production_companies_md_field)** | `Warner Bros.` | Studios involved in production. |
| **[production_countries](ca://s?q=production_countries_md_field)** | `United States` | Countries involved in production. |
| **[release_date](ca://s?q=release_date_md_field)** | `2008-07-18` | Release date. |
| **[revenue](ca://s?q=revenue_md_field)** | `1004558444` | Box office revenue in USD. |
| **[runtime](ca://s?q=runtime_md_field)** | `152` | Duration in minutes. |
| **[softcore](ca://s?q=softcore_md_field)** | `false` | Flag for soft erotic content. |
| **[spoken_languages](ca://s?q=spoken_languages_md_field)** | `English, Mandarin` | Spoken languages in the movie. |
| **[status](ca://s?q=status_md_field)** | `Released` | Release status. |
| **[tagline](ca://s?q=tagline_md_field)** | `Why So Serious?` | Promotional tagline. |
| **[title](ca://s?q=title_md_field)** | `The Dark Knight` | Localized movie title. |
| **[vote_average](ca://s?q=vote_average_md_field)** | `8.5` | Average user rating. |
| **[vote_count](ca://s?q=vote_count_md_field)** | `29000` | Number of votes. |
| **tags** | `Movie` | Category of the file, always `Movie`. |
| **adult** | `false` | Whether the movie is adult content (`true/false`). |
| **belongs_to_collection** | `The Dark Knight Trilogy` | Collection/series name if applicable. |
| **budget** | `185000000` | Production budget in USD. |
| **genres** | `Action, Drama` | List of genres. |
| **homepage** | `https://www.dc.com/batman` | Official movie website. |
| **TMDbID** | `155` | Unique TMDb identifier. |
| **IMDbID** | `tt0468569` | Unique IMDb identifier. |
| **origin_country** | `US` | Country of origin. |
| **original_language** | `en` | Original language. |
| **original_title** | `The Dark Knight` | Original movie title. |
| **overview** | `Batman faces Joker...` | Short synopsis/description. |
| **popularity** | `92.5` | Popularity score from TMDb. |
| **poster_path** | `/qJ2tW6WMUDux911r6m7haRef0WH.jpg` | Path to poster image. |
| **production_companies** | `Warner Bros.` | Studios involved in production. |
| **production_countries** | `United States` | Countries involved in production. |
| **release_date)** | `2008-07-18` | Release date. |
| **revenue** | `1004558444` | Box office revenue in USD. |
| **runtime** | `152` | Duration in minutes. |
| **softcore** | `false` | Flag for soft erotic content. |
| **spoken_languages** | `English, Mandarin` | Spoken languages in the movie. |
| **status** | `Released` | Release status. |
| **tagline** | `Why So Serious?` | Promotional tagline. |
| **title** | `The Dark Knight` | Localized movie title. |
| **vote_average** | `8.5` | Average user rating. |
| **vote_count** | `29000` | Number of votes. |
---
@ -145,7 +145,7 @@ All variables are placeholders wrapped in double braces `{{variable}}` and are u
```bash
git clone https://github.com/VitaliiRomanenko/popcorn-md
cd popcornmd
cd popcorn-md
npm install
```
@ -176,4 +176,4 @@ This plugin is not affiliated with, endorsed by, or sponsored by TMDb or Obsidia
---
*PopcornMD — Because your movie collection deserves better than plain text.*
*Popcorn-MD — Because your movie collection deserves better than plain text.*

View file

@ -1,7 +1,7 @@
{
"id": "popcorn-md",
"name": "Popcorn MD",
"version": "0.2.0",
"version": "0.2.1",
"minAppVersion": "1.5.0",
"description": "Generate and manage movie-related notes using IMDb identifiers or movie titles.",
"author": "4arlz",

4
package-lock.json generated
View file

@ -1,6 +1,6 @@
{
"name": "obsidian-sample-plugin",
"version": "1.0.0",
"name": "popcorn-md",
"version": "0.2.1",
"lockfileVersion": 3,
"requires": true,
"packages": {

View file

@ -1,7 +1,7 @@
{
"name": "obsidian-sample-plugin",
"version": "1.0.0",
"description": "This is a sample plugin for Obsidian (https://obsidian.md)",
"name": "popcorn-md",
"version": "0.2.1",
"description": "Generate and manage movie-related notes using IMDb identifiers or movie titles.",
"main": "main.js",
"type": "module",
"scripts": {

View file

@ -28,7 +28,6 @@ export class SearchModal extends Modal {
const movieList = container.createDiv("movie-list");
this.view = new SearchView(movieList);
this.input.focus();
// Key handler for navigation (listen on the whole container)
container.addEventListener("keydown", (event: KeyboardEvent) => {
switch (event.key){
case "ArrowDown":

View file

@ -1,3 +1,3 @@
{
"1.0.0": "1.0.0"
"0.2.1": "0.2.1"
}