21da667f0ed633647c3d406f00318ba3aaaf29a1
Marco Ricci Add a changelog and support...

Marco Ricci authored 5 months ago

1) # Changelog for `derivepassphrase`
2) 
3) [![Keeping a changelog][CHANGELOG_BADGE]][KEEP_A_CHANGELOG]
4) [![Using Semantic Versioning][SEMVER_BADGE]][SEMANTIC_VERSIONING]
5) 
6)   [CHANGELOG_BADGE]: Keep_a_changelog-E05735.svg
7)   [SEMVER_BADGE]: SemVer-3F4551.svg
8)   [KEEP_A_CHANGELOG]: https://keepachangelog.com/en/1.1.0/ 'Keeping a changelog'
9)   [SEMANTIC_VERSIONING]: https://semver.org/ 'Using Semantic Versioning'
10) 
11) <aside markdown><small>
12) (All entries are from the perspective of a user, not a developer.
13) The <q>public API</q>, as defined by Semantic Versioning, is outlined in the
14) [Reference section][REFERENCE]: the set of documented modules, classes,
15) methods and functions, and the documented behavior, options and arguments of
16) the command-line tools.
17) As per the Semantic Versioning and the Keep a Changelog terminology,
18) <q>Fixed</q> entries justify a <q>patch</q> release,
19) <q>Added</q> and <q>Deprecated</q> entries a <q>minor</q> release,
20) and <q>Changed</q> and <q>Removed</q> entries a <q>major</q> release.
21) <q>Security</q> can justify any type of release;
22) if <q>major</q> or <q>minor</q>, these are accompanied by corresponding
23) entries of the respective types above.
24) Again as per Semantic Versioning, at major version zero, the above
25) justification is not yet binding, and <em>any</em> new release may
26) effectively constitute a new <q>major</q> release.)
27) </small></aside>
28) 
Marco Ricci Streamline documentation fi...

Marco Ricci authored 3 months ago

29)   [REFERENCE]: reference/index.md
Marco Ricci Add a changelog and support...

Marco Ricci authored 5 months ago

30) 
Marco Ricci Switch from towncrier to sc...

Marco Ricci authored 2 months ago

31) <!-- scriv changelog start -->
Marco Ricci Add a changelog and support...

Marco Ricci authored 5 months ago

32) 
Marco Ricci Release 0.3.3

Marco Ricci authored 3 weeks ago

33) ## 0.3.3 (2024-11-28)
34) 
35) ### Added
36) 
37)   - Checking whether an SSH key is suitable now also depends on the SSH
38)     agent in use.  API functions now optionally take an additional
39)     [`SSHAgentClient`][derivepassphrase.ssh_agent.SSHAgentClient] object to
40)     test agent-specific key suitability.  If not given, then the old
41)     behavior is retained: SSH keys are suitable if they are suitable under
42)     any (conforming) SSH agent.
43) 
44) ### Fixed
45) 
46)   - If the SSH agent supports deterministic DSA/ECDSA signatures (e.g.
47)     [RFC 6979][]), then mark DSA and ECDSA SSH keys as suitable.
48) 
49) [RFC 6979]: https://www.rfc-editor.org/rfc/rfc6979
50) 
Marco Ricci Release 0.3.2

Marco Ricci authored 2 months ago

51) ## 0.3.2 (2024-10-21)
52) 
53) ### Fixed
54) 
55)   - _*Actually* actually_ remove the `derivepassphrase_export` program, which was
56)     turned into a subcommand in v0.2.0 and supposed to have been removed in
57)     v0.3.1 already.  Removed on disk is not the same as removed in
58)     version control.
59) 
Marco Ricci Release 0.3.1

Marco Ricci authored 2 months ago

60) ## 0.3.1 (2024-10-21)
61) 
62) ### Fixed
63) 
64)   - Fix PyPI classification: Python 3.9 is supported.
65)   - *Actually* remove the `derivepassphrase_export` program, which was
66)     turned into a subcommand in v0.2.0.
67) 
Marco Ricci Release 0.3.0

Marco Ricci authored 2 months ago

68) ## 0.3.0 (2024-10-15)
69) 
70) ### Added
71) 
72)   - Convert changelog management from towncrier to [scriv][].
73)   - Add SSH agent spawning support to the test suite.  Use this support to
74)     test the agent functionality on all known major SSH agent
75)     implementations automatically. ([#12])
76)   - Add [hypothesis][]-based tests to the test suite.
77)   - Update README to add explanations for virtual environments and package
78)     extras.
79)   - Update README to demonstrate configuration storing and SSH agent use.
80)     Include comments on Windows support for SSH agents.
81)   - Use cross-references in the documentation of function signatures.
82)   - Add proper support for Buffer types in the SSH agent client.  Any
83)     Python object supporting the buffer protocol can be used as input to
84)     a function of the client, and any output from the client is returned
85)     as bytes objects.  Because of the zero-copy semantics of the
86)     underlying data/memory block, this should stay relatively time- and
87)     space-efficient.
88)   - Add [hypothesis][]-based tests for serialization to and
89)     deserialization from the SSH agent wire format.
90)   - Support Python 3.9 and 3.13.
91) 
92) [#12]: https://github.com/the-13th-letter/derivepassphrase/issues/12
93) [hypothesis]: https://pypi.org/project/hypothesis/
94) [scriv]: https://pypi.org/project/scriv
95) 
96) ### Changed
97) 
98)   - Change links to point to public project repositories, if possible.  For
99)     legal reasons.
100) 
101)   - Use the same filename/URL convention for API reference as the Python
102)     standard library does.
103) 
104)   - Rewrite functionality for checking for valid vault(1) configurations:
105)     include an actual validation function which throws errors upon
106)     encountering format violations, and which allows specifying which types
107)     of extensions (unknown settings, `derivepassphrase`-only settings) to
108)     tolerate during validation.
109) 
110)     This is a **breaking API change** because the function return annotation
111)     changed, from [`typing.TypeGuard`][] to [`typing_extensions.TypeIs`][].
112)     These were the originally intended semantics, but when
113)     `derivepassphrase` was first designed, the Python type system did not
114)     support this kind of partial type narrowing.
115) 
116)   - Fail earlier, and more gracefully/specifically, when we cannot talk to
117)     the SSH agent because Python does not support UNIX domain sockets on
118)     this system.  In particular, this is the current situation on Windows.
119) 
120)     This adds another failure case to the `SSHAgentClient` constructor, and
121)     therefore constitutes a **breaking API change**.
122) 
123)   - In `derivepassphrase vault`, accept `key` and `phrase` entries just like
124)     vault(1) does: `key` always overrides `phrase` in the configuration, no
125)     matter the level.
126) 
127)     This is a command-line only change.
128) 
129)   - In `derivepassphrase vault`, when importing settings, accept falsy values
130)     everywhere `vault` does, with a warning.  Depending on the setting, they
131)     are equivalent to zero, the empty string, or "not set".  ([#17])
132) 
133)     This is a command-line only change, and only affects importing.  The API
134)     provides a new function to normalize falsy settings, but still otherwise
135)     requires settings to be of the correct type.  Storing a malformed
136)     configuration with such falsy values will still generate errors when
137)     `derivepassphrase vault` loads the settings from disk.
138) 
139)   - In `derivepassphrase vault`, when importing configurations,
140)     correctly merge them with the existing one, same as vault(1): keep
141)     all named services and their settings (and the global settings if
142)     applicable) that are not mentioned in the imported configuration.
143)     The import procedure is thus more akin to a section-wise import of
144)     the configurations, instead of a "full" import, and the resulting
145)     configuration generally is a merge of both inputs.  ([#16])
146) 
147)   - The following operations or configuration settings now raise
148)     warnings:
149) 
150)       * in imported configurations: using falsy values of the wrong type
151)       * in imported configurations: using falsy values with no practical
152)         effect
153)       * setting a passphrase in the configuration if a key is already
154)         set
155)       * using an empty service name on the command-line or in an
156)         imported configuration
157) 
158) [#16]: https://github.com/the-13th-letter/derivepassphrase/issues/16
159) [#17]: https://github.com/the-13th-letter/derivepassphrase/issues/17
160) 
161) ### Fixed
162) 
163)   - Fixed the textual description of the return value for
164)     [`SSHAgentClient.request`][derivepassphrase.ssh_agent.SSHAgentClient.request],
165)     which didn't match the declared type annotation.
166) 
Marco Ricci Release 0.2.0

Marco Ricci authored 3 months ago

167) ## 0.2.0 (2024-09-12)
168) 
Marco Ricci Switch from towncrier to sc...

Marco Ricci authored 2 months ago

169) ### Added
Marco Ricci Release 0.2.0

Marco Ricci authored 3 months ago

170) 
Marco Ricci Switch from towncrier to sc...

Marco Ricci authored 2 months ago

171)   - Support configuration data export from `vault` in v0.2, v0.3 and
172)     storeroom formats.
Marco Ricci Release 0.2.0

Marco Ricci authored 3 months ago

173) 
174)     This feature requires the `cryptography` Python module, but is available
Marco Ricci Switch from towncrier to sc...

Marco Ricci authored 2 months ago

175)     even if `vault` is not installed. ([#1])
Marco Ricci Release 0.2.0

Marco Ricci authored 3 months ago

176) 
177) [#1]: https://github.com/the-13th-letter/derivepassphrase/1
178) 
Marco Ricci Switch from towncrier to sc...

Marco Ricci authored 2 months ago

179) ### Fixed
180) 
181)   - Deploy versioned documentation with [mike][].  Set up a "latest" tag and
182)     the "0.<var>x</var>" version of the documentation with the contents so
183)     far.
184) 
185) [mike]: https://pypi.org/project/mike
186) 
187) ### Changed
188) 
189)   - Changed `sequin` and `ssh_agent_client` to be submodules of
190)     `derivepassphrase`.  Further moved `derivepassphrase.Vault` and
191)     `derivepassphrase.AmbiguousByteRepresentation` into a new submodule
192)     `vault`, and renamed submodule `ssh_agent_client` to `ssh_agent`. ([#3])
193)   - Changed internal error handling and error messages, to better work in
194)     the context of a command-line tool. ([#4])
195)   - Combine and consolidate `derivepassphrase.types` and
196)     `derivepassphrase.ssh_agent.types` into a new submodule
197)     `derivepassphrase._types`.  Despite the name, the module is public.
198)     ([#7])
199)   - Warn the user when entering (directly, or via configuration
200)     editing/importing) a passphrase that is not in the configured Unicode
201)     normalization form. (But don't otherwise reject any textual master
202)     passphrases.) ([#9])
203)   - Move all existing functionality into a subcommand, in anticipation of
204)     other passphrase derivation schemes, with different settings.
205)     Automatically forward calls without a subcommand to the "vault"
206)     subcommand.
Marco Ricci Release 0.2.0

Marco Ricci authored 3 months ago

207) 
208)     Also store the settings in a file specific to the respective subsystem,
Marco Ricci Switch from towncrier to sc...

Marco Ricci authored 2 months ago

209)     instead of globally.  Automatically fall back to, and migrate, the old
210)     global settings file if no subsystem-specific configuration was found.
211)     ([#10])
Marco Ricci Release 0.2.0

Marco Ricci authored 3 months ago

212) 
Marco Ricci Switch from towncrier to sc...

Marco Ricci authored 2 months ago

213)   - Make `derivepassphrase_export` a subcommand: `derivepassphrase export`.
214)     ([#11])
Marco Ricci Release 0.2.0

Marco Ricci authored 3 months ago

215) 
216) [#3]: https://github.com/the-13th-letter/derivepassphrase/3
217) [#4]: https://github.com/the-13th-letter/derivepassphrase/4
218) [#7]: https://github.com/the-13th-letter/derivepassphrase/7
219) [#9]: https://github.com/the-13th-letter/derivepassphrase/9
220) [#10]: https://github.com/the-13th-letter/derivepassphrase/10
221) [#11]: https://github.com/the-13th-letter/derivepassphrase/11
222) 
Marco Ricci Switch from towncrier to sc...

Marco Ricci authored 2 months ago

223) ### Deprecated
Marco Ricci Release 0.2.0

Marco Ricci authored 3 months ago

224) 
Marco Ricci Switch from towncrier to sc...

Marco Ricci authored 2 months ago

225)   - Using the implied subcommand or the implied global configuration file is
226)     deprecated, and will be removed in v1.0.
Marco Ricci Release 0.2.0

Marco Ricci authored 3 months ago

227) 
228) 
Marco Ricci Release 0.1.3

Marco Ricci authored 4 months ago

229) ## 0.1.3 (2024-07-28)
230) 
Marco Ricci Switch from towncrier to sc...

Marco Ricci authored 2 months ago

231) ### Fixed
Marco Ricci Release 0.1.3

Marco Ricci authored 4 months ago

232) 
Marco Ricci Switch from towncrier to sc...

Marco Ricci authored 2 months ago

233)   - Do not crash upon selecting a key on the command-line if there already
234)     is a key stored in the configuration. ([#5])
235)   - Create the configuration directory upon saving, if it does not yet
236)     exist.  ([#6])
237)   - Isolate the tests properly and consistently from the user's
238)     configuration, so that user configuration problems do not cause
239)     unrelated test failures. ([#8])
240)   - Add an alternate MkDocs configuration for building the documentation in
241)     offline mode.
242)   - Fix typing issues according to `mypy`'s strict mode.
Marco Ricci Release 0.1.3

Marco Ricci authored 4 months ago

243) 
244) [#5]: https://github.com/the-13th-letter/derivepassphrase/5
245) [#6]: https://github.com/the-13th-letter/derivepassphrase/6
246) [#8]: https://github.com/the-13th-letter/derivepassphrase/8
247) 
248) 
Marco Ricci Release 0.1.2

Marco Ricci authored 4 months ago

249) ## 0.1.2 (2024-07-22)
250) 
Marco Ricci Switch from towncrier to sc...

Marco Ricci authored 2 months ago

251) ### Fixed
Marco Ricci Release 0.1.2

Marco Ricci authored 4 months ago

252) 
Marco Ricci Switch from towncrier to sc...

Marco Ricci authored 2 months ago

253)   - Include and exclude the correct files in the `sdist` and `wheel`
254)     distributions.  (Previously, `sdist` contained VCS artifacts, and
255)     `wheel` was missing some paths.)
Marco Ricci Reintegrate branch 'master'...

Marco Ricci authored 2 months ago

256)   - Lint and reformat all code using [ruff](https://pypi.org/package/ruff/).
257)   - Mention
258)     [`mkdocstrings-python`](https://pypi.org/package/mkdocstrings-python/)
Marco Ricci Switch from towncrier to sc...

Marco Ricci authored 2 months ago

259)     in the documentation's page footer.
260)   - Remove JavaScript and external font loading from documentation website,
261)     so that the site works even in restricted browser settings.
262)   - Set up a changelog, using
263)     [towncrier](https://pypi.org/package/towncrier).
Marco Ricci Release 0.1.2

Marco Ricci authored 4 months ago

264) 
265) 
Marco Ricci Add a changelog and support...

Marco Ricci authored 5 months ago

266) ## 0.1.1 (2024-07-14)
267) 
Marco Ricci Switch from towncrier to sc...

Marco Ricci authored 2 months ago

268) ### Fixed
Marco Ricci Add a changelog and support...

Marco Ricci authored 5 months ago

269) 
Marco Ricci Switch from towncrier to sc...

Marco Ricci authored 2 months ago

270)   - Restore the `__version__` attribute in all top-level packages.
271)   - Declare compatibility with Python 3.10 in project metadata, and include
272)     necessary version-specific dependencies.
273)   - Publish the documentation online, and link to it in the repository
274)     metadata and the Python package metadata.
Marco Ricci Add a changelog and support...

Marco Ricci authored 5 months ago

275) 
276) 
277) ## 0.1.0 (2024-07-14)
278) 
Marco Ricci Switch from towncrier to sc...

Marco Ricci authored 2 months ago

279) ### Added
Marco Ricci Add a changelog and support...

Marco Ricci authored 5 months ago

280)